Nginx Linux (Nginx)

Nginx — после обновления системы изменился путь к журналам

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

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

После обновления Linux или способа установки Nginx администратор не находит прежний access.log/error.log. Файлы могли переехать, записываться в журнал системы, в контейнер или в иной virtual host; сначала выясните действующие директивы, не создавая вручную произвольные файлы журналов.

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

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

После обновления Linux или способа установки Nginx администратор не находит прежний access.log/error.log. Файлы могли переехать, записываться в журнал системы, в контейнер или в иной virtual host; сначала выясните действующие директивы, не создавая вручную произвольные файлы журналов.

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

Возможная причинаКак узнатьЧто делать
Путь переопределён в server/locationУ виртуального сервера есть собственные журналы.nginx -T показывает другой error_log или access_logИспользовать найденный фактический путь
Процесс работает в контейнере или панелиЖурналы из контейнера или панели необязательно попадают в /var/log/nginx.journalctl хоста пуст, но docker logs содержит ошибкиПроверить точку запуска экземпляра
Ротация переместила старые файлыСтарое имя может относиться к уже закрытому файлу.Рядом есть .1/.gz или правила logrotateПроверить ротацию без удаления архивов

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

  1. Определите, какой Nginx обслуживает сайтПо SSH выведите пути сборки Nginx и параметры системы. Если панель управляет несколькими экземплярами, найдите процесс нужного веб-сервера и не делайте вывод по глобальному каталогу /var/log. Для контейнера используйте его штатный вывод журналов.
    Linux · Терминал (Bash)Команда
    Только чтение; nginx -V сообщает --conf-path и --prefix.
    nginx -V 2>&1; ps -ef | grep "[n]ginx"
  1. Найдите действующие директивы журналированияВ nginx -T смотрите строки error_log, access_log и названия включённых файлов. Значение access_log off выключает журнал доступа в текущем контексте; путь может быть относительным к prefix. Если access_log направлен в /dev/stdout, ищите журнал контейнера.
    Linux · Терминал (Bash)КомандаНужен sudo
    Полный вывод может содержать секреты. Обратите внимание на контекст http/server/location.
    sudo nginx -T 2>&1 | grep -nE "error_log|access_log|configuration file"
  1. Проверьте файл и права чтенияКогда нашли конкретный путь, выполните ls -l и tail -n 20. Отсутствие нового файла иногда объясняется отсутствием запросов, переопределением журнала, ротацией или ошибкой открытия; не создавайте пустой журнал вручную, если не знаете владельца.
  2. Пути типичные, замените путями из конфигурации; только чтение
    Linux · Терминал (Bash)КомандаНужен sudo
    Пути типичные, замените путями из конфигурации; только чтение.
    sudo ls -lah /var/log/nginx/; sudo tail -n 30 /var/log/nginx/error.log
  1. Проверьте системный журнал и ротациюНа systemd посмотрите journalctl -u nginx. Для logrotate проверьте соответствующий файл в /etc/logrotate.d и записи ротации, особенно если есть файлы .1 и .gz. В контейнерах обычно читают журналы через панель контейнеров, не через journalctl хоста.
    Linux · Терминал (Bash)КомандаНужен sudo
    Не запускайте принудительную ротацию без понимания её сценария.
    sudo journalctl -u nginx --since "1 hour ago" --no-pager; ls -l /etc/logrotate.d/
  1. Сделайте контрольный запрос к нужному доменуВ другом окне вызовите небольшой URL с уникальным суффиксом ?logcheck=... без личных данных и сразу проверьте найденный access_log. Если записи нет, ищите вышестоящий прокси, access_log off и отдельный location. Логи могут быть буферизованы.
  2. Запуск на клиенте
    Linux · Терминал (Bash)Команда
    Запуск на клиенте. Убедитесь, что URL не создаёт изменяющих действий.
    curl -I "https://example.com/?logcheck=nginx1616"
  1. Изменяйте журналирование только при необходимостиЕсли журнал должен храниться по старому пути, сначала проверьте разрешения каталога, настройки ротации и мониторинга; сохраните старый файл конфигурации. Укажите согласованный путь в error_log/access_log, проверьте nginx -t, перечитайте Nginx и убедитесь, что записи появились без утечки секретов.
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Не включайте подробные debug-журналы постоянно: они увеличивают объём и могут содержать чувствительные данные.
    sudo nginx -t && sudo systemctl reload nginx

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

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

Появилась запись контрольного запроса в выбранном журнале, ошибок открытия файла в системном журнале нет, ротация и сборщик логов ориентированы на действительный путь.

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

Если файл пуст, сверьте серверную точку входа и конкретный location; если Nginx работает в контейнере, проверьте stdout/stderr. Не удаляйте старые журналы до настройки мониторинга.

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

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

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