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
verificar el estado de acceso de la carpeta
ls -alt
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