solucion forbidden files español error configuration nginx http-status-code-403 domain-name

configuration - forbidden - Error Nginx 403: el índice del directorio de[carpeta] está prohibido



nginx assets 403 (16)

Tengo 3 nombres de dominio y estoy tratando de alojar los 3 sitios en un servidor (una gota de Ocean Digital) usando Nginx.

mysite1.name mysite2.name mysite3.name

Solo 1 de ellos funciona. Los otros dos resultan en 403 errores (de la misma manera).

En mi registro de errores nginx, veo: [error] 13108#0: *1 directory index of "/usr/share/nginx/mysite2.name/live/" is forbidden .

Mi configuración habilitada para sitios es:

server { server_name www.mysite2.name; return 301 $scheme://mysite2.name$request_uri; } server { server_name mysite2.name; root /usr/share/nginx/mysite2.name/live/; index index.html index.htm index.php; location / { try_files $uri $uri/ /index.html index.php; } location ~ /.php$ { fastcgi_split_path_info ^(.+/.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } }

Los 3 sitios tienen archivos de configuración casi idénticos.

Los archivos de cada sitio están en carpetas como /usr/share/nginx/mysite1.name/someFolder, y luego /usr/share/nginx/mysite1.name/live es un enlace simbólico a eso. (Lo mismo para mysite2 y mysite3.)

He visto Nginx 403 prohibido para todos los archivos, pero eso no ayudó.

¿Alguna idea sobre lo que podría estar mal?


De hecho, hay varias cosas que debe verificar. 1. comprueba el estado de ejecución de tu nginx

ps -ef|grep nginx ps aux|grep nginx|grep -v grep

Aquí debemos verificar quién está ejecutando nginx. por favor recuerda el usuario y grupo

  1. verificar el estado de acceso de la carpeta

    ls -alt

  2. comparar con el estado de la carpeta con nginx

(1) si el estado de acceso de la carpeta no es correcto

sudo chmod 755 /your_folder_path

(2) si el usuario y el grupo de la carpeta no son lo mismo con la ejecución de nginx

sudo chown your_user_name:your_group_name /your_folder_path

y cambia el nombre de usuario y el grupo en ejecución de nginx

nginx -h

para encontrar dónde está el archivo de configuración nginx

sudo vi /your_nginx_configuration_file //in the file change its user and group user your_user_name your_group_name; //restart your nginx sudo nginx -s reload

Porque el usuario de la ejecución predeterminada de nginx es nobody y el grupo no es nadie. si no notamos este usuario y grupo, se introducirá 403.


De manera simple de hacer en Ubuntu o Linux

403 Forbidden nginx / 1.10.3 (Ubuntu)

First Stop servidor nginx con su sistema

sudo service nginx stop

y comience el servidor apache2

sudo service apache2 restart

Espero que esto sea trabajo. Intenté que esto funcionaba para mí.


Debido a que está utilizando php-fpm , debe asegurarse de que el usuario de php-fpm sea ​​el mismo que el usuario de nginx .

Compruebe /etc/php-fpm.d/www.conf y configure php user y group en nginx si no es así.

El usuario de php-fpm necesita permiso de escritura.


Encontré un buen ejemplo aquí: https://github.com/daylerees/laravel-website-configs/blob/6db24701073dbe34d2d58fea3a3c6b3c0cd5685b/nginx.conf

Esta configuración funcionó para mí:

server { server_name www.mysite2.name; return 301 $scheme://mysite2.name$request_uri; } server { #This config is based on https://github.com/daylerees/laravel-website-configs/blob/6db24701073dbe34d2d58fea3a3c6b3c0cd5685b/nginx.conf server_name mysite2.name; # The location of our project''s public directory. root /usr/share/nginx/mysite2/live/public/; # Point index to the Laravel front controller. index index.php; location / { # URLs to attempt, including pretty ones. try_files $uri $uri/ /index.php?$query_string; } # Remove trailing slash to please routing system. if (!-d $request_filename) { rewrite ^/(.+)/$ /$1 permanent; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ /.php$ { fastcgi_split_path_info ^(.+/.php)(/.+)$; # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }

Entonces, el único resultado en el navegador fue un error de Laravel: "Vaya, parece que algo salió mal".

Una MALA IDEA que podría solucionar ese problema sería chmod -R 777 app/storage (que encontré aquí: https://.com/a/18624752/470749 ). Pero hacer algo que se pueda escribir en todo el mundo es una mala seguridad.

Creo que la chmod -R 755 app/storage funciona y es más segura.


Encontré un error similar
--- "403 Prohibido" en la página web
--- "13: Permiso denegado" en el registro de errores en /var/log/nginx/error.log

Debajo de 3 pasos funcionó para mí:

1: Terminal abierto, vi algo como debajo

user1@comp1:/home/www/

Entonces, mi nombre de usuario es "usuario1" (desde arriba)

2: Usuario cambiado en /etc/nginx/nginx.conf

# user www-data; user user1;

3: Reloaded el nginx

sudo nginx -s reload

Además, he aplicado permisos de archivo / carpeta (antes de hacerlo por encima de 3 pasos)
(755 en mi directorio, digamos / dir1 /) & (644 para archivos debajo de ese directorio):
(No estoy seguro, si este paso adicional es realmente necesario, un poco más de 3 pasos podría ser suficiente):

chmod 755 ./dir1/ chmod 644 ./dir1/*.*

Espero que esto ayude a alguien rápido. La mejor de las suertes.


Necesitas ejecutar el permiso en tu directorio de archivos estáticos. También necesitan ser seleccionados por su usuario y grupo nginx.


Para mí, el problema era que cualquier otra ruta distinta de la base estaba funcionando, y esta línea solucionó mi problema:

index index.php;

Lo más completo:

server { server_name example.dev; root /var/www/example/public; index index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ /.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }


Parece un problema de permisos.

Intenta establecer todos los permisos como lo hiciste en mysite1 al otro sitio.

Por defecto, los permisos de archivos deben ser 644 y los directorios 755. También verifique si el usuario que ejecuta nginx tiene permiso para leer esos archivos y directorios.


Puede obtener esto debido a la política de Nginx (por ejemplo, "denegar"), o puede obtener esto debido a la configuración incorrecta de Nginx, o puede obtener esto debido a las restricciones del sistema de archivos.

Puede determinar si es el último (y posiblemente vea evidencia de una configuración incorrecta mediante el uso de strace (excepto que el OP no tendrá acceso a eso):

# pidof nginx 11853 11852 # strace -p 11853 -p 11852 -e trace=file -f Process 11853 attached - interrupt to quit Process 11852 attached - interrupt to quit [pid 11853] stat("/var/www/html/kibanaindex.html", 0x7ffe04e93000) = -1 ENOENT (No such file or directory) [pid 11853] stat("/var/www/html/kibana", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 ^CProcess 11853 detached Process 11852 detached

Aquí estoy inspeccionando la actividad del sistema de archivos hecha por nginx mientras ejecutaba una prueba (tuve el mismo error que tú).

Aquí hay una parte seleccionada de mi configuración en el momento

location /kibana/3/ { alias /var/www/html/kibana; index index.html; }

En mi caso, como claramente lo muestra strace, la unión de en el "alias" al "índice" no era lo que esperaba, y parece que necesito acostumbrarme siempre a agregar nombres de directorio con un /, entonces en mi caso, lo siguiente funcionó:

location /kibana/3/ { alias /var/www/html/kibana/; index index.html; }


Si simplemente intenta listar el contenido del directorio, use autoindex on; me gusta:

location /somedir { autoindex on; }


Si simplemente intenta listar el contenido del directorio, use autoindex on; me gusta:

server { listen 80; server_name domain.com www.domain.com; access_log /var/...........................; root /path/to/root; location / { index index.php index.html index.htm; } location /somedir { autoindex on; } }


Si tiene indexado el directorio, y está teniendo este problema, es probable que sea porque el try_files que está utilizando tiene una opción de directorio:

location / { try_files $uri $uri/ /index.html index.php; } ^ that is the issue

Eliminarlo y debería funcionar:

location / { try_files $uri /index.html index.php; }

Por lo que puedo ver, esto es causado porque nginx intentará indexar el directorio, y será bloqueado por sí mismo. Lanzar el error mencionado por OP.


Tuve el mismo problema, el archivo de registro me mostró este error:

2016/03/30 14:35:51 [error] 11915#0: *3 directory index of "path_scripts/viewerjs/" is forbidden, client: IP.IP.IP.IP, server: domain.com, request: "GET /scripts/viewerjs/ HTTP/1.1", host: "domain", referrer: "domain.com/new_project/do_update"

Estoy alojando una aplicación PHP con codeignitor framework. Cuando quería ver archivos cargados, recibí un 403 Error .

El problema era que el nginx.conf no estaba definido correctamente. En lugar de

index index.html index.htm index.php

solo incluyo

index index.php

Tengo un index.php en mi raíz y pensé que era suficiente, estaba equivocado;) La pista me dio NginxLibrary


cambie try_files para que apunte a la ruta index.php , en el "Laravel" que mencionó debería ser algo como esto

location / { try_files $uri $uri/ /public/index.php$request_uri; }

Y en el proyecto "codeigniter", inténtalo así

location / { try_files $uri $uri/ /public_web/index.php$request_uri; }


6833#0: *1 directory index of "/path/to/your/app" is forbidden, client: 127.0.0.1, server: lol.com, request: "GET / HTTP/1.1", host: "localhost"

Estaba ejecutando Ubuntu 15.10 y encontré el error 403 Forbidden debido a una razón simple. En nginx.conf (archivo de configuración para nginx), el usuario era ''www-data''. Una vez que cambié el nombre de usuario a [mi nombre de usuario], funcionó bien suponiendo que se otorgaron los permisos necesarios a mi nombre de usuario. Pasos seguidos por mí:

chmod 755 /path/to/your/app

Mi archivo de configuración se ve así:

**user [my username]**;#I made the change here. worker_processes auto; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; server { listen 80; server_name My_Server; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { proxy_pass http://127.0.0.1:8000; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }


location ~* /.php$ { ... fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }

Cambiar por defecto

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

a

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

resolvió mi problema