Nginx Linux (Nginx)

Nginx — в журнале доступа пусто, хотя пользователь получает ошибку

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

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

Пользователь видит ошибку на странице, но строки о запросе нет в ожидаемом access.log. Возможны отдельный виртуальный хост, отключённая запись, буферизация или ошибка на внешнем узле до Nginx.

В этой статье
  1. Симптом и границы применимости
  2. Возможные причины и как их отличить
  3. Пошаговая диагностика и исправление
  4. Как проверить результат
  5. Если проблема не устранена

#Симптом и границы применимости

Пользователь видит ошибку на странице, но строки о запросе нет в ожидаемом access.log. Возможны отдельный виртуальный хост, отключённая запись, буферизация или ошибка на внешнем узле до Nginx.

#Возможные причины и как их отличить

Возможная причинаКак узнатьЧто делать
Журнал другой площадкиNginx ведёт несколько журналов, а панель может показывать один.В nginx -T другой access_log для location/serverНайти эффективную директиву
Логирование отключено или отфильтрованоНекоторые запросы не записываются намеренно.access_log off или if=условие в конфигурацииПроверить настройки сбора
Ошибка возникла до NginxОтвет мог сформировать промежуточный узел.Во внешнем прокси есть запись, а у Nginx её нетПроверить CDN/LB и сетевой маршрут

#Пошаговая диагностика и исправление

  1. Зафиксируйте время и тип ошибкиПопросите пользователя сообщить точное время, адрес без токенов, HTTP-код и снимок сообщения. Сами сделайте один тестовый запрос из терминала; добавьте в URL безопасный параметр поиска test-log=... только если приложение допускает параметр, иначе используйте уже существующий путь.
  1. Проверьте попадание на NginxС компьютера выполните запрос с curl и запомните дату и HTTP-код; строка Server сама по себе не доказывает, где возникла ошибка. Если запрос проходит через CDN/балансировщик, найдите его журналы за тот же интервал.
    Linux · Терминал (Bash)Команда
    Запрос не меняет конфигурацию; для некоторых приложений HEAD отличается от GET.
    curl -I https://example.com/
  1. Найдите все эффективные директивы access_logПодключитесь по SSH и выполните nginx -T. Проверьте server и завершающий обработку location для данного URL: access_log может быть переопределён внутри location. Особенно ищите access_log off, параметр if= и запись в syslog. Не ограничивайтесь /var/log/nginx/access.log.
    Linux · Терминал (Bash)КомандаНужен sudo
    Результат безопаснее просматривать локально, без публикации секретов.
    sudo nginx -T 2>&1 | grep -nE "access_log|log_format|server_name|error_log"
  1. Проверьте буферизацию и праваЕсли access_log настроен с buffer= или flush=, записи появляются не обязательно сразу. Посмотрите наличие файла и время изменения, не создавая и не обнуляя его. Если в error_log есть ошибки записи, проверьте права пользователя рабочих процессов и свободное место.
  2. Пример типичного пути; действительный путь возьмите из nginx -T
    Linux · Терминал (Bash)КомандаНужен sudo
    Пример типичного пути; действительный путь возьмите из nginx -T.
    sudo ls -l /var/log/nginx/
    df -h /var/log
  1. Сравните с журналом ошибокДля даты жалобы проверьте error_log и systemd-journal; ошибки соединения или TLS могут возникнуть до записи HTTP-запроса. Если хостинг-панель показывает события в другом журнале, проверьте формат и задержку её обновления.
  2. Содержимое журнала может включать чувствительные адреса и заголовки
    Linux · Терминал (Bash)КомандаНужен sudo
    Содержимое журнала может включать чувствительные адреса и заголовки.
    sudo journalctl -u nginx -n 60 --no-pager
  1. Восстановите запись только там, где она нужнаЕсли access_log off ошибочно стоит в нужном location, сохраните копию конфигурации и согласуйте включение записи с учётом персональных данных. Проверьте синтаксис и перечитайте Nginx. Если ошибку выдаёт CDN, настройте наблюдение на нём, а не включайте бессмысленные журналы на origin.
  2. Перед перечитыванием сохраните файл и проверьте влияние на место диска
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Перед перечитыванием сохраните файл и проверьте влияние на место диска.
    sudo nginx -t

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

#Как проверить результат

Сделайте один контролируемый запрос к известному URL и убедитесь, что соответствующая строка появилась в выбранном журнале (с учётом flush). Сопоставьте код ответа в журнале с тем, который видит пользователь.

#Если проблема не устранена

Если строки по-прежнему нет, разберите DNS, IPv4/IPv6, балансировщик и другой Nginx-контейнер. Не отключайте буферизацию и не включайте детальное логирование всех пользовательских данных без необходимости.

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

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

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