Решение проблем, связанных с ошибкой NGINX «403 Forbidden»
Ошибка '403 Forbidden' может возникать по разным причинам, но чаще всего она связана с неправильными правами доступа к ресурсам. В статье мы рассмотрим основные причины этой ошибки и предложим пошаговое руководство по её устранению.
Вы узнаете, как настроить права доступа, правильно конфигурировать сервер и исправить другие возможные проблемы. Все это поможет вам быстро восстановить нормальную работу сайта без лишних усилий.
Об ошибке
«403 Forbidden » - это универсальная ошибка NGINX, которая указывает на то, что вы запросили что-то, а NGINX (по ряду причин) не может это предоставить. «403 » является кодом состояния HTTP, который означает, что веб-сервер получил и понял ваш запрос, но не может предпринять никаких дальнейших действий.
Поиск файла конфигурации 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
Для начала нужно определить, от имени какого пользователя запущен 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 *
Комментарии
Выполняю: sudo chown -R nginx:nginx *
И получаю в ответ: chown: invalid user: ‘nginx:nginx’
nginx установлен последний для ubuntu, работает процесс, но получаю 403 Forbidden
Проверил /etc/passwd и /etc/group - пользователя и группы nginx не существует.
Как это так, подскажите?
у тебя ответ: chown: invalid user: ‘nginx:nginx’
возможно ты используешь root, и поэтому надо так:
sudo chown -R root:root *