Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Nginx Error 403: Forbidden (directory index of "/var/www/html/" is forbidden) Linux / DevOps

Nginx Error 403: directory index of is forbidden — Как исправить

Обновлено: 18.08.2026  ·  Официальная база знаний

При переходе на главную страницу или в любой подкаталог сайта браузер выдает ошибку 403 Forbidden. В журнале error.log регистрируется: directory index of "/var/www/html/" is forbidden, client: ..., server: example.com, request: "GET / HTTP/1.1".

ФакторСостояние системыПричина запрета
Индексный файл (index.html / index.php)Физически отсутствует в каталоге rootNginx не нашел файл по умолчанию для отдачи клиенту
Директива autoindexoff (по умолчанию)Генерация листинга файлов директории запрещена политикой безопасности
Директива indexНе объявлена или не содержит нужного расширенияNginx не знает, какой именно файл является стартовой точкой
  • Прямой запрос к существующим файлам (например, http://example.com/logo.png) работает отлично.
  • Ошибка 403 возникает строго при запросе к URL, оканчивающимся на слэш / (каталогам).
  1. Проверьте фактическое наличие индексного файла в директории вашего сайта:
    ls -la /var/www/html/
  2. Убедитесь, что в конфигурации виртуального хоста в блоке server или location / прописана директива index со всеми необходимыми файлами:
    server {
        listen 80;
        server_name example.com;
        root /var/www/html;
    
        # Добавьте index.php и index.html:
        index index.php index.html index.htm;
    
        location / {
            try_files $uri $uri/ =404;
        }
    }
  3. Если этот виртуальный хост предназначен для раздачи файлов (файловый архив, репозиторий) и вам требуется отображать список файлов директории, включите модуль autoindex:
    location /downloads/ {
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
    }
  4. Проверьте синтаксис конфигурации и примените изменения:
    sudo nginx -t
    sudo systemctl reload nginx
Внимание: Включение autoindex on; на production-сайтах категорически не рекомендуется без необходимости, так как это раскрывает злоумышленникам структуру каталогов, резервные копии (.bak, .sql) и конфиги.
Практический опыт инженера: В фреймворках (Laravel, Symfony) частая ошибка — указание корня `root /var/www/app;` вместо `root /var/www/app/public;`, из-за чего Nginx не находит `index.php`.

Частые вопросы (FAQ)

Почему Nginx выдает 403 Forbidden, а не 404 Not Found?

Потому что директория физически существует на диске. Nginx пытается обработать запрос к директории, но так как индексный файл не найден, а листинг каталога (autoindex) отключен, сервер запрещает доступ по коду 403.

Что делает директива autoindex_exact_size off?

Она переключает отображение точного размера файлов в байтах на человекочитаемый формат (КБ, МБ, ГБ).

Почему index.php не открывается автоматически при наличии директивы index?

Убедитесь, что в конфигурации настроена секция location ~ \.php$ для передачи исполнения FastCGI-серверу (PHP-FPM).

Как кастомизировать страницу со списком файлов при autoindex on?

Используйте сторонний модуль ngx_http_fancyindex_module, позволяющий добавлять темы оформления и CSS к листингу файлов.