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