Решение проблем, связанных с ошибкой NGINX «403 Forbidden»
«403 Forbidden» — наиболее распространенная ошибка при работе с NGINX. В этой статье мы расскажем о причинах возникновения 403 forbidden NGINX, а также о том, как найти ее причину и исправить основную проблему.
- Об ошибке
- Поиск файла конфигурации NGINX
- Некорректный индексный файл
- Автоиндекс
- Права доступа к файлам
- Идентификация пользователя NGINX
- Установите права собственности на файл
- Установите права доступа
«403 Forbidden» — это универсальная ошибка NGINX, которая указывает на то, что вы запросили что-то, а NGINX (по ряду причин) не может это предоставить. «403» является кодом состояния HTTP, который означает, что веб-сервер получил и понял ваш запрос, но не может предпринять никаких дальнейших действий.
По умолчанию файлы конфигурации NGINX находятся в папке /etc/nginx. Если вы просмотрите этот каталог, то найдете несколько конфигурационных файлов для различных модулей сервера.
Главный файл конфигурации — /etc/nginx/nginx.conf. Он содержит основные директивы для NGINX и является аналогом файла httpd.conf для Apache.
Чтобы отредактировать этот файл, используйте команду:
CentOS 7: sudo nano /etc/nginx/conf.d/test.example.com.conf Ubuntu 16.04: sudo nano /etc/nginx/sites-available/test.example.com.conf
Одна из наиболее распространенных причин ошибки 403 forbidden NGINX — некорректная настройка индексного файла.
nginx.conf указывает, какие индексные файлы должны загружаться, и в каком порядке. Например, приведенная ниже строка указывает NGINX искать index.html, затем index.htm, затем index.php:
index index.html index.htm index.php;
Если ни один из этих трех файлов не будет найден в каталоге, NGINX вернет ошибку «403 Forbidden».
Примечание. Имена файлов чувствительны к регистру. Если nginx.conf указывает index.html, а файл называется Index.html, это приведет к ошибке «403 Forbidden».
Если вы хотите использовать имя индексного файла, которое ваш веб-сервер NGINX не распознает, отредактируйте nginx.conf и добавьте имя файла в строку конфигурации индекса.
Например, чтобы добавить index.py в список распознаваемых индексных файлов, отредактируйте эту строку следующим образом:
index index.html index.htm index.php index.py;
Сохраните изменения, а затем перезапустите NGINX командой:
sudo nginx -s reload
Альтернативным решением является разрешение индекса директории. Индекс директории означает, что если индексный файл не найден, сервер отобразит все содержимое директории.
По соображениям безопасности индекс директории в NGINX по умолчанию отключен.
При «403 forbidden NGINX», если вы хотите показать индекс директории в ситуациях, когда NGINX не может найти (идентифицировать) файл, отредактируйте nginx.
Autoindex on; Autoindex_exact_size off;
Эти директивы должны быть добавлены в блок location. Можно либо добавить их в существующий блок location/, либо добавить новый. Окончательный результат должен выглядеть так:
location / { [pre-existing configurations, if applicable] autoindex on; autoindex_exact_size off; }
Также можно активировать индексирование директории в определенной папке, если не хотите, чтобы она была доступна для всего сайта:
location /myfiles { autoindex on; autoindex_exact_size off; }
Сохраните изменения в файле, затем перезапустите NGINX командой:
sudo nginx -s reload
Некорректные права доступа к файлам являются еще одной причиной ошибки «403 Forbidden NGINX». Для использования с NGINX рекомендуется стандартная настройка: для каталогов — 755 и для файлов — 644. Пользователь NGINX также должен быть владельцем файлов.
Для начала нужно определить, от имени какого пользователя запущен NGINX. Для этого используйте команду:
ps -ef | grep nginx
В этом примере рабочий процесс NGINX работает от имени пользователя nginx.
Перейдите на уровень выше корневой директории документа сайта. Например, если корневая директория вашего сайта /usr/share/nginx/example.com, перейдите в /usr/share/nginx с помощью команды:
cd /usr/share/nginx
Измените права собственности на все файлы в директориях нижних уровней на пользователя nginx с помощью команды:
sudo chown -R nginx:nginx *
403 forbidden NGINX — как исправить: установите права доступа для каждой директории на 755 с помощью команды:
sudo chmod 755 [имя директории]
Например, чтобы установить права доступа для директории example.com, используется команда:
sudo chmod 755 example.com
Затем перейдите в корневой каталог веб-документа:
sudo chmod 755 example.com
Измените права доступа для всех файлов в этой директории с помощью команды:
sudo chmod 644 *
Пожалуйста, оставляйте ваши комментарии по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, лайки, дизлайки, отклики, подписки!
Вадим Дворниковавтор-переводчик статьи «Solve an NGINX 403 Forbidden Error»
Решение проблем, связанных с ошибкой NGINX «403 Forbidden»
- Об ошибке
- Поиск файла конфигурации NGINX
- Некорректный индексный файл
- Автоиндекс
- Права доступа к файлам
- Идентификация пользователя NGINX
- Установите права собственности на файл
- Установите права доступа
«403 Forbidden» — это универсальная ошибка NGINX, которая указывает на то, что вы запросили что-то, а NGINX (по ряду причин) не может это предоставить.
По умолчанию файлы конфигурации NGINX находятся в папке /etc/nginx. Если вы просмотрите этот каталог, то найдете несколько конфигурационных файлов для различных модулей сервера.
Главный файл конфигурации — /etc/nginx/nginx.conf. Он содержит основные директивы для NGINX и является аналогом файла httpd.conf для Apache.
Чтобы отредактировать этот файл, используйте команду:
CentOS 7: sudo nano /etc/nginx/conf.d/test.example.com.conf Ubuntu 16.04: sudo nano /etc/nginx/sites-available/test.example.com.conf
Одна из наиболее распространенных причин ошибки 403 forbidden NGINX — некорректная настройка индексного файла.
nginx.conf указывает, какие индексные файлы должны загружаться, и в каком порядке. Например, приведенная ниже строка указывает NGINX искать index.html, затем index.htm, затем index.php:
index index. html index.htm index.php;
Если ни один из этих трех файлов не будет найден в каталоге, NGINX вернет ошибку «403 Forbidden».
Примечание. Имена файлов чувствительны к регистру. Если nginx.conf указывает index.html, а файл называется Index.html, это приведет к ошибке «403 Forbidden».
Если вы хотите использовать имя индексного файла, которое ваш веб-сервер NGINX не распознает, отредактируйте nginx.conf и добавьте имя файла в строку конфигурации индекса.
Например, чтобы добавить index.py в список распознаваемых индексных файлов, отредактируйте эту строку следующим образом:
index index.html index.htm index.php index.py;
Сохраните изменения, а затем перезапустите NGINX командой:
sudo nginx -s reload
Альтернативным решением является разрешение индекса директории. Индекс директории означает, что если индексный файл не найден, сервер отобразит все содержимое директории.
По соображениям безопасности индекс директории в NGINX по умолчанию отключен.
При «403 forbidden NGINX», если вы хотите показать индекс директории в ситуациях, когда NGINX не может найти (идентифицировать) файл, отредактируйте nginx.conf, как описано выше, и добавьте в него две следующие директивы:
Autoindex on; Autoindex_exact_size off;
Эти директивы должны быть добавлены в блок location. Можно либо добавить их в существующий блок location/, либо добавить новый. Окончательный результат должен выглядеть так:
location / { [pre-existing configurations, if applicable] autoindex on; autoindex_exact_size off; }
Также можно активировать индексирование директории в определенной папке, если не хотите, чтобы она была доступна для всего сайта:
location /myfiles { autoindex on; autoindex_exact_size off; }
Сохраните изменения в файле, затем перезапустите NGINX командой:
sudo nginx -s reload
Некорректные права доступа к файлам являются еще одной причиной ошибки «403 Forbidden NGINX». Для использования с NGINX рекомендуется стандартная настройка: для каталогов — 755 и для файлов — 644. Пользователь NGINX также должен быть владельцем файлов.
Для начала нужно определить, от имени какого пользователя запущен NGINX. Для этого используйте команду:
ps -ef | grep nginx
В этом примере рабочий процесс NGINX работает от имени пользователя nginx.
Перейдите на уровень выше корневой директории документа сайта. Например, если корневая директория вашего сайта /usr/share/nginx/example.com, перейдите в /usr/share/nginx с помощью команды:
cd /usr/share/nginx
Измените права собственности на все файлы в директориях нижних уровней на пользователя nginx с помощью команды:
sudo chown -R nginx:nginx *
403 forbidden NGINX — как исправить: установите права доступа для каждой директории на 755 с помощью команды:
sudo chmod 755 [имя директории]
Например, чтобы установить права доступа для директории example.com, используется команда:
sudo chmod 755 example.com
Затем перейдите в корневой каталог веб-документа:
sudo chmod 755 example. com
Измените права доступа для всех файлов в этой директории с помощью команды:
sudo chmod 644 *
Пожалуйста, оставляйте ваши комментарии по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, лайки, дизлайки, отклики, подписки!
Вадим Дворниковавтор-переводчик статьи «Solve an NGINX 403 Forbidden Error»
Php с Nginx — 403 Запрещено
спросил
Изменено 7 месяцев назад
Просмотрено 24 тысячи раз
Я хочу запустить проект yii2 (расширенный шаблон) с nginx. Я использую виртуальный бокс с бродягой (ubuntu 16.04, php 5.6).
В моем файле Nginx есть следующие настройки: 9/активы/.*\.php$ { отрицать все; } расположение ~ \.php$ { включить fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127. 0.0.1:9000; #fastcgi_pass unix:/var/run/php5-fpm.sock; try_files $uri = 404; } расположение ~* /\. { отрицать все; } }
У меня есть следующий структурный проект с разрешением:
vagrant@machine1]-[/var/www]-[git master] $ ls -ля внешнего интерфейса/ всего 68 drwxrwxr-x 1 бродяга бродяга 4096 июл 5 14:27 ./ drwxrwxr-x 1 бродяга бродяга 4096 9 июля 16:14 ../ drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 активы/ drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 bootstrap/ drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 компоненты/ drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 config/ drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 контроллеры/ drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 данные/ drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 помощники/ drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 сообщения/ drwxrwxr-x 1 бродяга бродяга 4096 июл 5 14:27 модели/ drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 модули/ drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 время выполнения/ drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 валидаторы/ drwxrwxr-x 1 бродяга бродяга 4096 июль 5 14:27 просмотров/ drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 веб/ drwxrwxr-x 1 бродяга бродяга 4096 5 июля 14:27 widgets/
Вывод журналов ошибок nginx:
2018/07/09 21:42:36 [ошибка] 23865#23865: *1 индекс каталога "/var/www/frontend/web/" запрещен, клиент: 192. 168.56.1, сервер: b2bfrontend.test, запрос: "GET / HTTP/1.1", хост: "b2bfrontend.test"
If I run b2bfrontend.test I get an error — 403 Forbidden
- php
- nginx
- yii
- yii2
- yii2-advanced-app
Just fix location from:
location / { try_files $uri $uri/ /index.php$is_args$args; }
по адресу:
местоположение / { try_files $uri /index.php$is_args$args; }
причина : он пытается пройти $uri/
, который равен /var/www/frontend/web/
(поскольку он существует) и выполнить индексирование каталогов, что кажется недопустимым.
сообщение уже говорит это:
индекс каталога «/var/www/frontend/web/» запрещен
Я раскомментировал эту строку, и теперь она работает:
fastcgi_pass unix:/var/run/php5-fpm.sock;
В моем случае у меня Debian 9, поэтому я немного изменил его:
9(. +\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; }Ваш сервер nginx, скорее всего, работает либо под пользователем nginx, либо под www-data, в то время как ваши файлы принадлежат vagrant:vagran. Проверьте, под каким пользователем работает nginx, и соответствующим образом измените владельца ваших файлов. Кроме того, если вы используете php-fpm для php, проверьте конфигурацию php-fpm и посмотрите, какой пользователь там определен.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но никогда не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
php — проблема с конфигурацией Nginx: получение 403 Forbidden
спросил
Изменено 7 лет, 2 месяца назад
Просмотрено 3к раз
Я пытаюсь настроить веб-приложение с помощью Nginx, но при попытке получить к нему доступ я получаю ошибку 403. Я использовал различные подходы к решению этой проблемы, в том числе убедился, что мои разрешения установлены, но безрезультатно.
вот конфигурация для веб-приложения:
server { слушать 80; имя_сервера локальный хост индекс index.php index.html index.htm; корень /usr/share/nginx/html/my-app/webapp; port_in_redirect выключен; # Использовать кешированный или фактический файл, если он существует, в противном случае передать запрос в WordPress расположение / { try_files $uri $uri/ /index.php?q=$uri&$args; } # Запретить доступ к скрытым файлам расположение ~* /\.ht { отрицать все; доступ_лог выключен; log_not_found выключен; } # Передать PHP-скрипты в PHP-FPM расположение ~* \.php$ { try_files $uri /index.php; fastcgi_index index.php; fastcgi_pass unix:/var/run/php5-fpm.sock; включить fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; } }
Я запустил chmod -R 777 my-app
, чтобы дать ему все разрешения.