Ошибка 403 Forbidden в Nginx / Apache: проверка прав www-data и index
Причины ошибки 403 Forbidden
Веб-сервер принял запрос, но категорически отказывается отдавать страницу клиенту. В логах Nginx появляется запись:
directory index of "/var/www/site/" is forbidden, client: ..., server: ...| Основная причина | Что происходит |
|---|---|
| Отсутствует индексный файл | В папке нет файла index.html или index.php, а листинг каталога запрещен |
| Неправильные права доступа | Веб-сервер www-data не может прочитать файл |
| Закрыты права на родительскую папку | Нет флага +x на одной из верхних папок по цепочке к сайту |
Пошаговое устранение ошибки 403
- Проверьте наличие индексного файла:
Убедитесь, что в корневой папке сайта действительно существует файл
index.htmlилиindex.php:ls -l /var/www/my_site - Проверьте директиву index в настройках виртуального хоста Nginx:
Откройте конфиг сайта
sudo nano /etc/nginx/sites-available/mysiteи убедитесь, что в строкеindexперечислены ваши файлы:index index.php index.html index.htm; - Исправьте владельца и права доступа:
sudo chown -R www-data:www-data /var/www/my_site sudo find /var/www/my_site -type d -exec chmod 755 {} + sudo find /var/www/my_site -type f -exec chmod 644 {} + - Проверьте права на чтение корневой цепочки каталогов:
Веб-сервер должен иметь право исполнения (
+x) для прохода по всему пути (/var,/var/www):chmod +x /var /var/www - Перезапустите веб-сервер:
sudo systemctl reload nginx
Если вы храните сайт в домашней папке пользователя (/home/user/): По умолчанию домашняя папка пользователя имеет права 700, поэтому веб-сервер www-data не может в нее зайти. Дайте право на вход: chmod +x /home/user.
Частые вопросы (FAQ)
Как включить отображение файлов и папок в браузере (листинг)?
В блоке location / конфигурации Nginx добавьте директиву autoindex on;.
Что означает ошибка 403 при работе с Apache?
В Apache2 ошибка 403 часто вызвана директивой Require all denied в конфигурационном файле. Замените ее на Require all granted.
Может ли файл .htaccess вызывать 403 ошибку в Apache?
Да, если в файле .htaccess прописаны запрещающие правила Deny from all или правила блокировки IP-адресов.
Что делать, если включен модуль безопасности SELinux (на CentOS/RHEL)?
SELinux блокирует доступ веб-сервера к нестандартным папкам. Восстановите контекст безопасности: sudo restorecon -Rv /var/www/site.