Ошибка Nginx 403: индекс каталога [папки] запрещен
у меня есть 3 доменных имени и я пытаюсь разместить все 3 сайта на одном сервере (цифровая капля океана) с помощью Nginx.
mysite1.название mysite2.название mysite3.имя
работает только 1 из них. Два других приводят к 403 ошибкам (таким же образом).
в моем журнале ошибок nginx я вижу:[error] 13108#0: *1 directory index of "/usr/share/nginx/mysite2.name/live/" is forbidden
.
my sites-enabled config is:
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;
}
}
все 3 сайта имеют почти одинаковые конфигурационные файлы.
файлы каждого сайта находятся в папках как /usr/share/nginx/mysite1.name /someFolder, а затем/usr/share/nginx/mysite1.name / live является символической ссылкой на это. (То же самое для mysite2 и mysite3.)
Я посмотрел на nginx 403 запрещено для всех файлов, но это не помогло.
любые идеи о том, что может быть не так?
15 ответов:
Если у вас отключена индексация каталогов и возникла эта проблема, это, вероятно, потому, что у try_files, которые вы используете, есть опция каталога:
location / { try_files $uri $uri/ /index.html index.php; } ^ that is the issue
удалите его и все должно работать:
location / { try_files $uri /index.html index.php; }
из того, что я вижу, это вызвано тем, что nginx попытается индексировать каталог и будет заблокирован сам по себе. Бросая ошибку, упомянутую OP.
Если вы просто пытаетесь перечислить содержимое каталога, используйте
autoindex on;
как:location /somedir { autoindex on; }
вот конфигурация, которая работает:
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 ^/(.+)/$ / 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; } }
тогда единственным выходом в браузере была ошибка Laravel: "Упс, похоже, что-то пошло не так."
не выполнять
chmod -R 777 app/storage
(Примечание). Создание чего-то пригодного для записи в мире-это плохая безопасность.
chmod -R 755 app/storage
строительство и является более безопасным.
я столкнулся с подобной ошибкой
--- "403 запрещено" на веб-странице
--- "13: отказано в разрешении" в журнале ошибок в /var/log/nginx/error.журналниже 3 шаги работали для меня:
1: откройте терминал, увидел что-то вроде ниже
user1@comp1:/home/www/
Итак, мое имя пользователя "user1 "(сверху)
2: изменен пользователь в /etc/nginx / nginx.conf
# user www-data; user user1;
3: перезагрузка nginx
sudo nginx -s reload
кроме того, я применил права доступа к файлам/папкам (прежде чем я сделал выше 3 шагов)
(755 в мой каталог, скажем /dir1/) & (644 для файлов в этом каталоге):
(я не уверен, если этот дополнительный шаг действительно требуется, чуть выше 3 шагов может быть достаточно):chmod 755 ./dir1/ chmod 644 ./dir1/*.*
надеюсь, это поможет быстро кто-то. Желаю удачи.
у меня была та же проблема, файл журнала показал мне эту ошибку:
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"
я размещаю PHP приложение с codeignitor framework. Когда я хотел просмотреть загруженные файлы я получил
403 Error
.проблема была в том, что
nginx.conf
не был должным образом определен. Вместоindex index.html index.htm index.php
я включил только
index index.php
у меня есть индекс.php в моем корне, и я думал, что этого достаточно, я был неправ ;) Намек дал мне NginxLibrary
на самом деле есть несколько вещей, которые вы должны проверить. 1. проверьте состояние работы вашего nginx
ps -ef|grep nginx ps aux|grep nginx|grep -v grep
здесь мы должны проверить, кто работает nginx. пожалуйста, помните пользователя и группу
проверьте состояние доступа к папке
ls-alt
сравнить со статусом папки с nginx в
(1) если состояние доступа к папке не правильно
sudo chmod 755 /your_folder_path
(2) если папки пользователь и группа не совпадают с запуском nginx
sudo chown your_user_name:your_group_name /your_folder_path
и измените имя пользователя и группу nginx
nginx -h
чтобы найти, где находится файл конфигурации 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
потому что пользователь nginx по умолчанию работает никто и группа никто. если мы не замечаем этого пользователя и группы, 403 будет введен.
Если вы просто пытаетесь перечислить содержимое каталога, используйте
autoindex on;
как: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; } }
вы можете получить это из-за политики Nginx (например. "deny"), или вы можете получить это из-за неправильной конфигурации Nginx, или вы можете получить это из-за ограничений файловой системы.
вы можете определить, если его позже (и, возможно, увидеть доказательства неправильной конфигурации с помощью strace (за исключением того, что OP не будет иметь доступа к этому):
# 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
здесь я проверяю активность файловой системы, выполненную nginx во время выполнения теста (у меня была та же ошибка, что и у nginx вы.)
вот выбранная часть моей конфигурации в то время
location /kibana/3/ { alias /var/www/html/kibana; index index.html; }
в моем случае, как ясно показывает strace, присоединение "псевдонима" к "индексу" было не тем, что я ожидал, и, похоже, мне нужно привыкнуть всегда добавлять имена каталогов с помощью/, поэтому в моем случае сработало следующее:
location /kibana/3/ { alias /var/www/html/kibana/; index index.html; }
Это похоже на некоторые проблемы с разрешениями.
попробуйте установить все разрешения, как вы сделали в mysite1 на другой сайт.
по умолчанию права доступа к файлам должны быть 644 и dirs 755. Также проверьте, есть ли у пользователя, который запускает nginx, разрешение на чтение этих файлов и dirs.
изменить
try_files
указатьindex.php
путь, в "Laravel", что вы упомянули это должно быть что-то вроде этогоlocation / { try_files $uri $uri/ /public/index.php$request_uri; }
а в проекте" codeigniter " попробуйте вот так
location / { try_files $uri $uri/ /public_web/index.php$request_uri; }
вам нужно разрешение на выполнение в вашем каталоге статических файлов. Также они должны быть chown'Ed вашим пользователем и группой nginx.
потому что вы используете
php-fpm
, вы должны убедиться в том, чтоphp-fpm
пользователь такой же, какnginx
пользователей.Регистрация
/etc/php-fpm.d/www.conf
и установите php user и group вnginx
если это не так.The
php-fpm
пользователю необходимо разрешение на запись.
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"
я запускал Ubuntu 15.10 и столкнулся с запрещенной ошибкой 403 по простой причине. В nginx.conf (конфигурационный файл для nginx), пользователь был "www-data". Как только я изменил имя пользователя [имя пользователя], он работал хорошо, предполагая, что необходимые разрешения были даны имя пользователя. Шаги, за которыми следую я:
chmod 755 /path/to/your/app
мой конфигурационный файл выглядит так:
**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; }
изменить значение по умолчанию
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
до
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
решить мою проблему.
для меня проблема заключалась в том, что любые маршруты, кроме базового маршрута, работали, добавив эту строку, исправил мою проблему:
index index.php;
полный вещь:
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; } }