El «403 Forbidden» es el error más común al trabajar con NGINX. En este artículo, te explicaremos las causas del error «403 forbidden» en NGINX, cómo encontrar su origen y cómo solucionar el problema principal.
Sobre el error
«403 Forbidden» es un error universal de NGINX que indica que has solicitado algo que NGINX (por varias razones) no puede proporcionar. «403» es un código de estado HTTP que significa que el servidor web recibió y entendió tu solicitud, pero no puede tomar ninguna medida adicional.
Encontrar el archivo de configuración de NGINX
Por defecto, los archivos de configuración de NGINX se encuentran en la carpeta /etc/nginx
. Si revisas este directorio, encontrarás varios archivos de configuración para diferentes módulos del servidor.
El archivo principal de configuración es /etc/nginx/nginx.conf
. Contiene las directivas principales para NGINX y es análogo al archivo httpd.conf
de Apache.
Para editar este archivo, usa el comando:
- CentOS 7:
sudo nano /etc/nginx/conf.d/test.example.com.conf
- Ubuntu 16.04:
sudo nano /etc/nginx/sites-available/test.example.com.conf
Para solucionar un error interno del servidor, debes verificar la configuración del servidor y los registros de errores.
Archivo de índice incorrecto
Una de las causas más comunes del error «403 forbidden» en NGINX es una configuración incorrecta del archivo de índice.
nginx.conf
indica qué archivos de índice se deben cargar y en qué orden. Por ejemplo, la línea siguiente indica a NGINX que busque index.html
, luego index.htm
, luego index.php
:
index index.html index.htm index.php;
Si ninguno de estos tres archivos se encuentra en el directorio, NGINX devolverá el error «403 Forbidden».
Nota: Los nombres de los archivos distinguen entre mayúsculas y minúsculas. Si nginx.conf
indica index.html
y el archivo se llama Index.html
, esto provocará el error «403 Forbidden».
Si quieres usar un nombre de archivo de índice que tu servidor web NGINX no reconoce, edita nginx.conf
y agrega el nombre del archivo a la línea de configuración del índice.
Por ejemplo, para agregar index.py
a la lista de archivos de índice reconocidos, edita la línea de la siguiente manera:
index index.html index.htm index.php index.py;
Guarda los cambios y luego reinicia NGINX con el comando:
sudo nginx -s reload
Autoíndice
Una alternativa es permitir el índice del directorio. El índice del directorio significa que si no se encuentra un archivo de índice, el servidor mostrará todo el contenido del directorio.
Si obtienes un «403 forbidden» en NGINX y quieres mostrar el índice del directorio en situaciones donde NGINX no puede encontrar (identificar) un archivo, edita nginx.conf
como se describió anteriormente y agrega las dos directivas siguientes:
autoindex on;
autoindex_exact_size off;
Estas directivas deben agregarse al bloque location
. Puedes agregarlas a un bloque location/
existente o agregar uno nuevo. El resultado final debe verse así:
location / {
[pre-existing configurations, if applicable]
autoindex on;
autoindex_exact_size off;
}
También puedes activar el indexado de directorios en una carpeta específica si no quieres que esté disponible para todo el sitio:
location /myfiles {
autoindex on;
autoindex_exact_size off;
}
Guarda los cambios en el archivo y luego reinicia NGINX con el comando:
sudo nginx -s reload
El error 403 Forbidden indica que el acceso está prohibido por reglas administrativas.
Permisos de archivo
Los permisos de archivo incorrectos son otra causa del error «403 Forbidden» en NGINX. Para su uso con NGINX, se recomienda la configuración estándar: 755 para directorios y 644 para archivos. El usuario NGINX también debe ser el propietario de los archivos.
Identificación del usuario NGINX
Primero, debes determinar en nombre de qué usuario se ejecuta NGINX. Para ello, usa el comando:
ps -ef | grep nginx
En este ejemplo, el proceso de trabajo de NGINX se ejecuta en nombre del usuario nginx
.
Establecer la propiedad del archivo
Ve al nivel superior del directorio raíz del documento del sitio. Por ejemplo, si el directorio raíz de tu sitio es /usr/share/nginx/example.com
, ve a /usr/share/nginx
con el comando:
cd /usr/share/nginx
Cambia la propiedad de todos los archivos en los subdirectorios al usuario nginx
con el comando:
sudo chown -R nginx:nginx *
Establecer los permisos de acceso
«403 forbidden» en NGINX – cómo solucionarlo: establece los permisos de acceso para cada directorio en 755 con el comando:
sudo chmod 755 [nombre del directorio]
Por ejemplo, para establecer los permisos de acceso para el directorio example.com
, se usa el comando:
sudo chmod 755 example.com
Luego, ve al directorio raíz del documento web:
sudo chmod 755 example.com
Cambia los permisos de acceso para todos los archivos en este directorio con el comando:
sudo chmod 644 *