У меня есть 3 доменных имени, и я пытаюсь разместить все 3 сайта на одном сервере (дроплет Digital Ocean), используя Nginx.
mysite1.name mysite2.name mysite3.name
Только 1 из них работает. Два других результата приводят к 403 ошибкам (таким же образом).
В моей Nginx журнал ошибок, я вижу: [error] 13108#0: *1 directory index of "/usr/share/nginx/mysite2.name/live/" is forbidden
.
Мой сайт с поддержкой конфигурации:
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 запрещено для всех файлов, но это не помогло.
Есть идеи, что может быть не так?
index.html
index.php
файлов, вы убедились, что они существуют в этой папке?root
чтобы быть/Users/myUsername/code/app
вместо/Users/myUsername/code/app/public
.Ответы:
Если у вас отключена индексация каталога, и у вас возникла эта проблема, возможно, потому, что у используемых вами файлов try_file есть опция каталога:
Удалите это, и это должно работать:
Почему это происходит
TL; DR: это вызвано тем, что nginx попытается проиндексировать каталог и сам будет заблокирован. Выкидываю ошибку упомянутую ОП.
try_files $uri $uri/
означает, что из корневого каталога попробуйте файл, на который указываетuri
, если его не существует, попробуйте вместо этого каталог (отсюда и/
). Когда nginx обращается к каталогу, он пытается проиндексировать его и вернуть список файлов в нем браузеру / клиенту, однако по умолчанию индексирование каталога отключено и возвращает ошибку «Ошибка Nginx 403: индекс каталога [папки] запрещено".Индексирование каталогов контролируется с помощью
autoindex
параметра: https://nginx.org/en/docs/http/ngx_http_autoindex_module.html.источник
try_files
не пыталсяindex.php
, я просто продолжал получать 403 с "индекс каталога ... запрещено"$uri/
создает проблему?try_files $uri $uri/
означает, что из корневого каталога сети попробуйте файл, на который указывает uri. Если его нет, попробуйте вместо него каталог (отсюда и/
). Когда nginx обращается к каталогу, он пытается проиндексировать его и вернуть список файлов в нем браузеру / клиенту, однако по умолчанию индексирование каталога отключено и возвращает ошибку «Ошибка Nginx 403: индекс каталога [папки] запрещено". Индексирование каталогов контролируется с помощьюautoindex
опции: nginx.org/en/docs/http/ngx_http_autoindex_module.htmlВот конфиг, который работает:
Тогда единственным выводом в браузере была ошибка Laravel: «Ой, похоже, что-то пошло не так».
НЕ бегать
chmod -R 777 app/storage
( примечание ). Создание чего-то доступного для записи - плохая безопасность.chmod -R 755 app/storage
работает и более безопасен.источник
www-data
в Debian. Затем установите еще более строгие разрешения для папки, например:chmod -R 640 app/storage
thenchown -R :www-data app/storage
. Таким образом, файлы видны только владельцу приложения и веб-серверу. И никто вообще не может выполнить любой из сохраненных (возможно, загруженных) файлов напрямую. Nginx нужно только разрешение на чтение для доступа к файлам.public/
наroot /usr/share/nginx/mysitename/public/;
. После добавленияpublic/
и запускаservice nginx restart
все заработало.Если вы просто пытаетесь составить список содержимого каталога, используйте
autoindex on;
:источник
autoindex on
; было бы плохой идеей выставить содержимое моего каталога для широкой публики.Я обнаружил похожую ошибку
--- «403 Forbidden» на веб-странице
--- «13: Permission denied» в журнале ошибок по адресу /var/log/nginx/error.log
Ниже 3 Шаги работали для меня:
1: открыть терминал, увидел что-то вроде ниже
Итак, мое имя пользователя "user1" (сверху)
2: изменение пользователя в /etc/nginx/nginx.conf
3: перезагрузил nginx
Кроме того, я применил права доступа к файлам / папкам (до того, как я сделал выше 3 шага)
(755 для моего каталога, скажем / dir1 /) & (644 для файлов в этом каталоге):
(Я не уверен, действительно ли этот дополнительный шаг действительно требуется, чуть более 3 шагов может быть достаточно):
Надеюсь, это поможет кому-то быстро. Удачи.
источник
На самом деле есть несколько вещей, которые вы должны проверить. 1. проверьте работоспособность вашего nginx
Здесь нам нужно проверить, кто запускает nginx. пожалуйста, запомните пользователя и группу
проверить статус доступа к папке
ls -alt
сравнить со статусом папки с nginx
(1) если статус доступа к папке неправильный
(2) если пользователь и группа в папке не совпадают с запущенными в nginx
и измените работающее имя пользователя и группу nginx
найти где находится файл конфигурации nginx
Потому что пользователь nginx по умолчанию - никто, а группа - никто. если мы не заметили этого пользователя и группу, будет введено 403.
источник
У меня была такая же проблема, лог-файл показал мне эту ошибку:
Я хостинг PHP-приложение с рамкой codeignitor. Когда я хотел просмотреть загруженные файлы, я получил
403 Error
.Проблема заключалась в том, что
nginx.conf
он не был правильно определен. Вместо тогоя только включил
У меня есть index.php в корне, и я подумал, что этого достаточно, я ошибся;) Намек дал мне NginxLibrary
источник
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
index index.html index.htm index.php;
Вы можете получить это из-за политики Nginx (например, «deny»), или вы можете получить это из-за неправильной конфигурации Nginx, или вы можете получить это из-за ограничений файловой системы.
Вы можете определить, является ли он более поздним (и, возможно, увидеть свидетельство неверной конфигурации, используя strace (за исключением того, что OP не будет иметь доступа к этому):
Здесь я проверяю активность файловой системы, выполняемую nginx при выполнении теста (у меня была та же ошибка, что и у вас).
Вот выбранная часть моей конфигурации в то время
В моем случае, как ясно показывает strace, присоединение «псевдонима» к «индексу» было не тем, что я ожидал, и, похоже, мне нужно привыкнуть всегда добавлять имена каталогов с помощью /, поэтому в моем случае сработало следующее:
источник
/home/web/public
. Почему nginx пытается получить доступ к этим не найденным файлам, потому что я забыл удалить эту строку,index index.html index.htm index.nginx-debian.html;
так как эти файлы не находятся в моей общедоступной директории.Это похоже на некоторые проблемы с разрешениями.
Попробуйте установить все разрешения, как вы сделали в mysite1 для других сайтов.
По умолчанию права доступа к файлам должны быть 644, а каталоги 755. Также проверьте, есть ли у пользователя, который запускает nginx, разрешение на чтение этих файлов и каталогов.
источник
измените,
try_files
чтобы указатьindex.php
путь, в "Laravel", который вы упомянули, должно быть что-то вроде этогоА в проекте "codeigniter" попробуй вот так
источник
Поскольку вы используете
php-fpm
, вы должны убедиться, чтоphp-fpm
пользователь совпадает сnginx
пользователем.Проверьте
/etc/php-fpm.d/www.conf
и установите php user и group,nginx
если это не так.php-fpm
Пользователю необходимо разрешение на запись.источник
Вам нужно разрешение на выполнение в вашем каталоге статических файлов. Также они должны быть выбраны вашим пользователем и группой nginx.
источник
Изменить по умолчанию
в
решил мою проблему.
источник
Я запускал Ubuntu 15.10 и столкнулся с ошибкой 403 Forbidden по простой причине. В файле nginx.conf (файл конфигурации для nginx) пользователь был «www-data». После того, как я изменил имя пользователя на [мое имя пользователя], оно работало нормально, предполагая, что моему имени пользователя были предоставлены необходимые разрешения. За мной следуют шаги:
Мой файл конфигурации выглядит так:
источник
Для меня проблема была в том, что работали любые маршруты, кроме базового, добавление этой строки решило мою проблему:
Полная вещь:
источник
Чтобы исправить эту проблему, я провел целую ночь. Вот мои два цента на эту историю,
Это примечание: если вы используете mysql и соединения от hhvm до mysql становятся невозможными, проверьте, установлен ли у вас apparmor . отключи это.
источник
Я решил мою проблему, если я настраиваю как следует:
Это покажет ошибку 403.
Я пытался
autoindex on
, но не работает. Если я изменю свою конфигурацию, как это, это работает.Я думаю, что точное совпадение, если это путь, должно быть каталогом.
источник
когда вы хотите сохранить опцию директории, вы можете поставить index.php перед $ uri, как это.
источник