ver - ¿Por qué Nginx devuelve un 403 a pesar de que todos los permisos están configurados correctamente?




no tienes autorización para ver esta página. http error 403 drive (8)

Tengo configuración Nginx y mostrar la página de prueba correctamente. Si trato de cambiar la ruta de la raíz, recibo un error 403 Prohibido, aunque todos los permisos son idénticos. Además, el usuario nginx existe.

nginx.conf:

user nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log;

pid        /run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    index   index.html index.htm;

    server {
        listen       80;
        server_name  localhost;
        root         /var/www/html; #changed from the default /usr/share/nginx/html
    }
}

namei -om /usr/share/nginx/html/index.html

f: /usr/share/nginx/html/index.html
dr-xr-xr-x root root /
drwxr-xr-x root root usr
drwxr-xr-x root root share
drwxr-xr-x root root nginx
drwxr-xr-x root root html
-rw-r--r-- root root index.html

namei -om /var/www/html/index.html

f: /var/www/html/index.html
dr-xr-xr-x root root /
drwxr-xr-x root root var
drwxr-xr-x root root www
drwxr-xr-x root root html
-rw-r--r-- root root index.html

registro de errores

2014/03/23 12:45:08 [error] 5490 # 0: * 13 open () "/var/www/html/index.html" failed (13: Permiso denegado), cliente: XXX.XX.XXX. XXX, servidor: localhost, solicitud: "GET /index.html HTTP / 1.1", host: "ec2-XXX-XX-XXX-XXX.compute-1.amazonaws.com"


¡Modifique el archivo nginx.conf, cambie el nombre de usuario a su nombre de cuenta y reinicie nginx.it!


En primer lugar, debe ejecutar el siguiente comando para permitir que nginx acceda al sistema de archivos

sudo setsebool -P httpd_read_user_content 1

Puede verificar si los archivos o el directorio con el siguiente comando:

ls -Z

Si aún no es accesible, puede intentar cambiar la propiedad SELinux de los archivos y la carpeta con el siguiente comando:

chcon -Rt httpd_sys_content_t /path/to/www

Sin embargo, el comando anterior no se puede aplicar a archivos bajo el sistema FUSE o NFS.

Para habilitar el servicio de archivos desde soportes FUSE, puede usar:

setsebool httpd_use_fusefs 1

Para habilitar el servicio de archivos desde montajes NFS, puede usar:

setsebool httpd_use_nfs 1

Esto es una adición a la respuesta de Prowlas, pero no tengo suficiente reputación para comentar: si / path / to / www es un directorio de inicio de un usuario. Deberías intentarlo:

setsebool -P httpd_enable_homedirs=1

Esto resolvió mi problema

Fuente: http://forums.fedoraforum.org/archive/index.php/t-250779.html


Experimenté el mismo problema y fue debido a SELinux .

Para verificar si SELinux se está ejecutando:

# getenforce

Para deshabilitar SELinux hasta el próximo reinicio:

# setenforce Permissive

Reinicie Nginx y vea si el problema persiste. Si desea alterar permanentemente la configuración, puede editar /etc/sysconfig/selinux

Si su problema es SELinux, puede ejecutar lo siguiente para permitir que nginx sirva su directorio www (asegúrese de volver a activar SELinux antes de probar esto, es decir, # setenforce Enforcing )

# chcon -Rt httpd_sys_content_t /path/to/www

Si todavía tiene problemas, eche un vistazo a los indicadores booleanos en getsebool -a , en particular, es posible que deba activar httpd_can_network_connect para obtener acceso a la red

# setsebool -P httpd_can_network_connect on

Para mí, fue suficiente para permitir que http sirviera a mi directorio www.


He encontrado este problema cuando agregué un nuevo usuario con una carpeta /home/new_user como un nuevo host virtual. Asegúrese de que estas carpetas ( /home , /home/new_user , /home/new_user/xxx ...) sean 755 para que resuelva mi problema. Por fin, encontré que mi problema estaba correctamente de acuerdo con el archivo /var/log/nginx/error.log .


Recuerde que debe permitir que otros usuarios lean toda la ruta. Recuerde también que Dropbox establecerá 700 en su directorio raíz. Entonces chmod 755 ~/Dropbox resolvió mi problema.


Tuve el mismo problema:

  • Comprobado nginx.conf para verificar el usuario
  • Los permisos se establecieron correctamente
  • Se aseguró de que "x" a la derecha estuviera configurada para toda la ruta

Hice un reinicio desde la línea de comando (he estado usando Webmin todo este tiempo) y noté este error:

 [email protected]:/var/www/test.local$ sudo service nginx restart
 * Restarting nginx nginx 
nginx: [warn] conflicting server name "test.local" on 0.0.0.0:80, ignored
nginx: [warn] conflicting server name "test.local" on 0.0.0.0:80, ignored

Aparentemente había una definición duplicada y, por lo tanto, mi intento de acceder a "test.local" falló.


esto resolvió el mismo problema:

reinicie Nginx y vuelva a intentarlo. Si falla, verifique nuevamente los registros. Esto funcionó para mí