Saltar al contenido

4xx · Errores del cliente

Error 403 Forbidden: qué significa y cómo solucionarlo

El error 403 Forbidden significa que el servidor ha entendido la petición pero se niega a servirla: no tienes permiso para ver ese recurso. En una web propia, las causas más comunes son permisos de ficheros incorrectos, un directorio sin index.html, una regla de nginx o .htaccess que bloquea el acceso, o un firewall (WAF) como el de Cloudflare.

Qué significa el código 403

A diferencia del 401, iniciar sesión no lo arregla: el servidor ya sabe quién eres (o no le importa) y ha decidido que no puedes entrar. Puede ser una decisión correcta (zona de administración) o un error de configuración.

En Linux, el caso más típico es de permisos: nginx corre como el usuario www-data y no puede leer el fichero o atravesar alguna carpeta de la ruta. Basta con que una carpeta intermedia no tenga permiso de ejecución (x) para que todo lo que hay dentro dé 403.

Si la página de error tiene el logo de Cloudflare, el bloqueo no viene de tu servidor: lo ha hecho una regla de seguridad del WAF, el Bot Fight Mode o un bloqueo por país o IP.

Causas habituales del error 403

  • Permisos de ficheros o carpetas: el usuario del servidor web no puede leerlos.
  • Carpeta sin index.html (o index.php) y con el listado de directorios desactivado.
  • Reglas deny, allow o auth en nginx, o Require all denied / Deny from all en Apache.
  • Un .htaccess con reglas de seguridad demasiado estrictas (plugins de seguridad de WordPress).
  • WAF o protección anti-bots (Cloudflare, ModSecurity) que bloquea tu IP, tu país o tu User-Agent.
  • SELinux en CentOS/RHEL/Rocky: los ficheros no tienen el contexto httpd_sys_content_t.
  • Enlace directo a una imagen bloqueado por protección anti-hotlinking.

Si eres visitante de la web

  • Comprueba que la URL es correcta; algunas webs devuelven 403 en vez de 404 para no revelar qué existe.
  • Si usas VPN, desconéctala: muchas webs bloquean rangos de IP de VPN y centros de datos.
  • Borra cookies y caché, o prueba con otro navegador.

Cómo solucionar el error 403

  • Revisa el log de errores: nginx dice exactamente por qué (permission denied, directory index forbidden, access forbidden by rule).
  • Corrige los permisos: carpetas 755 y ficheros 644, propiedad del usuario correcto.
  • Comprueba que existe el fichero índice y que la directiva index lo incluye.
  • En SELinux, restaura el contexto con restorecon.
  • Si es Cloudflare, mira en Security → Events qué regla ha bloqueado la petición.

Configuración y comandos

Encontrar la causa en el log de nginx

bash
sudo tail -n 50 /var/log/nginx/error.log
# open() "/var/www/web/index.html" failed (13: Permission denied)
# directory index of "/var/www/web/" is forbidden

Corregir permisos

bash
sudo chown -R www-data:www-data /var/www/web
sudo find /var/www/web -type d -exec chmod 755 {} \;
sudo find /var/www/web -type f -exec chmod 644 {} \;
# ver los permisos de cada carpeta de la ruta
namei -l /var/www/web/index.html

SELinux (RHEL, Rocky, Alma)

bash
sudo restorecon -Rv /var/www/web
ls -Z /var/www/web

nginx: zona solo para tu IP

nginx
location /admin/ {
    allow 203.0.113.10;
    deny all;     # el resto recibe 403
}

Ejemplo de respuesta

http
HTTP/1.1 403 Forbidden
Server: nginx
Content-Type: text/html

<html><head><title>403 Forbidden</title></head>
<body><center><h1>403 Forbidden</h1></center><hr><center>nginx</center></body></html>

Preguntas frecuentes

¿Qué significa error 403 Forbidden?

Que el servidor ha recibido la petición pero se niega a servirla porque no tienes permiso. Puede ser intencionado (zona privada) o un fallo de permisos o de configuración.

¿Cómo soluciono un 403 en nginx?

Mira /var/log/nginx/error.log. Si dice Permission denied, corrige propietario y permisos (755 en carpetas, 644 en ficheros). Si dice directory index is forbidden, falta el index.html o la directiva index.

¿El 403 afecta al SEO?

Si Googlebot recibe 403 en páginas públicas, deja de indexarlas. Revisa que el firewall o Cloudflare no bloqueen a los rastreadores de Google.

¿403 o 404 para ocultar una página?

Si no quieres revelar que el recurso existe, 404 es más discreto. GitHub, por ejemplo, devuelve 404 en repositorios privados.

Códigos relacionados

Ver todos los códigos de estado HTTP