Как настроить ротацию логов Nginx для предотвращения переполнения диска
Высоконагруженные веб-серверы Nginx непрерывно записывают каждую входящую HTTP-сессию в файл access.log. За несколько месяцев непрерывной работы неротируемый файл журнала может разрастись до десятков гигабайт, полностью заполнив системный раздел сервера (/var/log).
При переполнении диска операционная система аварийно останавливает базы данных и процессы записи. Настройка системного демона Logrotate автоматизирует сжатие старых логов в компактные gzip-архивы и удаляет устаревшие файлы по заданному расписанию.
Частые вопросы
❓ Теряются ли запросы во время ротации логов?
Нет, сигнал USR1 заставляет Nginx атомарно переоткрыть файловый дескриптор без прерывания обработки пользовательских запросов.
❓ Можно ли полностью отключить access.log для статики?
Да, в секции `location ~* \.(jpg|css|js)$` можно указать директиву `access_log off;` для экономии места.
❓ Почему размер диска не уменьшился после удаления лога вручную через rm?
Nginx держит удаленный файл открытым. Чтобы освободить место, выполните команду `systemctl reload nginx`.