Настройка logrotate для openresty/nginx в centos 7

Требуется настроить logrotate для openresty/nginx под centos 7.

Я подготовил конфигурацию, но она некорректная. В 00:00 текущий локальный access.log лог обнуляется, но не формируется новый лог файл за предыдущий день.

openresty/nginx работает под nobody

Вопрос как исправить проблему с формированием лога за предыдущий день.

/usr/local/openresty/nginx/log/*log {
    create 0644 nobody nobody
    daily
    rotate 365
    missingok
    notifempty
    sharedscripts
    postrotate
    dateext
    /bin/kill -1 `cat /usr/local/openresty/nginx/logs/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

Ответы (1 шт):

Автор решения: Danila Vershinin

Скорее всего, NGINX продолжает писать в уже переименованный файл, так как не получает должный сигнал о том что лог нужно открыть заново.

За это отвечает postrotate. Из конфига стандартного NGINX:

postrotate
        [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
endscript

Попробуйте заменить на это, изменив путь к PID файлу.

Если после ротации даже не создаётся пустой файл, значит директива create не верна и не позволяет этому пользователя создавать файлы в директории. Проверьте что nobody можно создать файл в /usr/local/openresty/nginx/log/:

sudo -u nobody touch /usr/local/openresty/nginx/log/test.txt 
→ Ссылка