Nginx Linux

Nginx: 403 Forbidden

  • Обновлено
  • Чтение ≈ 2 минуты
  • Нужны права администратора

Краткий ответ

Nginx отвечает 403 Forbidden, если нет файла index, у пользователя nginx нет прав на каталог или файл, неверно задан root, мешает SELinux или включён запрет на листинг. Проверьте логи и права на всей цепочке каталогов.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Диагностика

#Что означает ошибка

Сообщение
403 Forbidden

Код 403 означает, что запрос дошёл до nginx, но доступ запрещён. В отличие от 404, ресурс найден (или должен быть найден), но nginx не может его отдать. Точную причину всегда показывает error.log: строки вида directory index of "/var/www/site/" is forbidden, open() failed (13: Permission denied) или access forbidden by rule.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Нет index-файлаВ каталоге нет index.html/index.php, а листинг отключён.В логе directory index ... is forbidden.Добавьте файл или задайте index.
Нет правПользователь nginx (www-data, nginx) не может читать файл или заходить в каталог.Permission denied (13) в логе.chmod/chown, права x на каждом уровне пути.
SELinuxКонтекст безопасности запрещает чтение.На CentOS/AlmaLinux/Rocky; в audit.log отказы nginx.Задайте контекст httpd_sys_content_t.
Неверный rootroot ведёт на несуществующий каталог.В логе No such file.Исправьте путь.

#Пошаговое решение

  1. Посмотрите журналНа сервере откройте error.log Nginx через панель или SSH, повторите запрос и найдите строку по времени и URL. directory index ... forbidden говорит об отсутствии index, Permission denied — о правах файлов, access forbidden by rule — о запрете конфигурации; исправления отличаются.
  2. Проверьте indexЕсли ошибка связана с индексом каталога, по SSH проверьте фактический root и существование index.php/index.html, затем директиву index в подходящем server. Не включайте autoindex on для закрытых каталогов только ради устранения 403.
  3. Проверьте права по всей цепочкеЕсли виден Permission denied, определите пользователя рабочего процесса Nginx через ps -o user,cmd -C nginx, затем namei -l /фактический/путь/к/файлу. У него должны быть права прохода через каталоги и чтения файла; в случае работы через PHP-FPM пользователь для записи может быть другим.
  4. Исправьте праваИсправьте права только у проблемного файла/каталога после просмотра ls -l и ACL; не используйте chmod 777, массовое chown -R или изменение всего домашнего каталога. Если сайт размещён в /home, рассмотрите отдельный документ-корень с минимальными правами.
  5. Проверьте SELinuxНа RHEL/AlmaLinux/Rocky с SELinux проверьте getenforce, ls -Z и AVC-сообщения в журнале. Меняйте контекст только после подтверждённого отказа; отключение SELinux целиком может скрыть другие ошибки защиты.
  6. Проверьте root и locationСравните root, alias и правило location для проблемного URL в выводе sudo nginx -T. При alias особенно важен завершающий /; запрет может относиться к другому каталогу, чем предполагает администратор. Перед правкой сохраните конфигурацию.
  7. Перезагрузите nginxПосле изменения выполните sudo nginx -t, убедитесь в успешном тесте и затем sudo systemctl reload nginx. Проверьте исходный URL и ресурсы, которые должны оставаться защищёнными; если ошибка повторилась, сопоставьте новый error.log со старым.

#Диагностика

Linux · Терминал (Bash)КомандаНужен sudo
Проверка прав по пути и пользователя nginx.
sudo tail -n 30 /var/log/nginx/error.log
namei -l /var/www/site/index.html
ps aux | grep "nginx: worker"
getenforce
Linux · Терминал (Bash)С осторожностьюНужен sudo
Исправление прав доступа и контекста SELinux.
namei -l /var/www/site/index.html
ls -l /var/www/site/index.html
getenforce 2>/dev/null || true
# Исправляйте владельца/ACL или контекст только у конкретного файла после диагностики.
# Не выполняйте chown -R и массовый chmod для всего сайта.

Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 1 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.