Исправление ошибки 403 Forbidden в Nginx

Ошибки "403 Forbidden" выводятся тогда, когда вы пытаетесь запросить у Nginx какой-либо ресурс, к которому Nginx не может получить доступ. Технически, ошибка 403 Forbidden не является ошибкой - это просто статус-код HTTP.

Для исправления этой ошибки полезно знать, что HTTP статус 403 возвращается в следующих случаях:

  • Пользователь был заблокирован от просмотра страницы/ресурса или даже всего сайта.
  • Пользователь пытается открыть директорию, но параметр autoindex поставлен на off.
  • Пользователь пытается получить доступ к файлу, к которому нельзя получить доступ извне.

Перечисленные случай - это яркие примеры, когда ошибка 403 Forbidden возвращается намеренно. В этом посте мы поговорим как избавиться от "ненужного" появления ошибки, которые возникают во-многих случаях из-за неправильной настройки сервера и т.д.

Неправильные права

Это одна из самых распространенных причин ошибки. Для того, чтобы показать файл, Nginx нужны права для чтения файла, а также права для выполнения на каждую директорию.

Если поставить права chmod 755 на все директории, а также 644 - для файлов, ошибка 403 не должна возникать.

Если у вас есть доступ к серверу, то можете воспользоваться командами ниже для изменения прав:

find "путь-к-директории" -type d -exec chmod 755 {} \;

find "путь-к-директории" -type f -exec chmod 644 {} \;

Первая команда изменит chmod всех директории на 755, а вторая - все файлов на 644.

Неправильно указана директива index

Вряд-ли ваш сайт статичный, поэтому для, например, PHP директива должна выглядеть примерно таким образом:

index index.html index.htm index.php;

С такой настройкой Nginx сперва попытается найти файл index.html, затем index.htm, а потом только index.php. Если вы не упомянете в директиве index.php, то серверу придется возвратить ошибку 403.