Как посмотреть логи Nginx?

«Как посмотреть логи Nginx?» — вопрос из категории Веб-серверы и балансировка, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Логи Nginx по умолчанию находятся в каталоге /var/log/nginx/. Основные файлы:

  • access.log — логи всех входящих HTTP-запросов.
  • error.log — логи ошибок сервера (уровень детализации задаётся в конфиге).

Основные команды для работы с логами:

# Потоковый просмотр логов в реальном времени (чаще всего используется)
tail -f /var/log/nginx/access.log

# Показать последние 50 строк и следить за новыми
tail -n 50 -f /var/log/nginx/error.log

# Поиск всех запросов с кодом состояния 404
grep ' 404 ' /var/log/nginx/access.log

# Подсчёт уникальных IP-адресов за последний час
grep "$(date -d '1 hour ago' '+%d/%b/%Y:%H')" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c

# Если Nginx управляется через systemd
journalctl -u nginx.service --since "today"

Конфигурация логирования задаётся в nginx.conf или конфигах виртуальных хостов:

http {
    # Формат лога можно кастомизировать
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent"';

    # Указание пути и формата
    access_log /var/log/nginx/access.log main;
    error_log  /var/log/nginx/error.log warn; # Уровни: debug, info, notice, warn, error, crit
}

Для анализа больших объёмов логов в продакшене я использую связку Fluentd / Logstash → Elasticsearch → Kibana/Grafana.