Ротация логов в nginx

Я нашел пример выполнения ротации журналов в Nginx здесь

Но простой тест с: установить $ date "2018-08-24"; access_log /home/tim/log/access-http-$date.log по умолчанию;

создает файл журнала с именем access-http-.log . Я использую nginx 1.13.6 (с openresty).

Обновление

После долгих взломов и настроек я придумал следующий сценарий logrotate для ротации различных файлов журналов, создаваемых nginx. Я положил его в / etc / logrotate. Остается проблема в том, что журналы не меняются ежедневно (в настоящее время я не уверен, почему), но logrotate -f дает именно тот результат, который мне нужен.

Интересное примечание. что nginx -s reload можно использовать вместо USR1. К сожалению, это не упоминается на странице журнала nginx, но я нашел его (на странице руководства IIRC). Я создаю openresty / nginx вручную, чтобы включить дополнительные модули, которые мне нужны, поэтому я не получаю различные дополнения, которые входят в упакованную версию, например, сохранение pid.

/path/to/log/access-http.log /path/to/log/access-https.log /path/to/log/api.log /path/to/log/error.log {
    daily
    missingok
    notifempty
    create 664 nobody tim
    dateext
    dateformat -%Y-%m-%d
    dateyesterday
    rotate 10
    su tim tim
    postrotate
      /usr/local/bin/openresty -s reload
    endscript

}

Я полагаю, это будет полезно для всех, у кого есть большая конфигурация nginx, обслуживающая как веб-страницы, так и API. Я сохраняю http отдельно, так как я не обслуживаю страницы, отличные от https, и он не позволяет детскому дерьму со сценариями попадать в журналы моих страниц.

0
задан 13 September 2018 в 00:53
1 ответ

Просто установите задачу cron на минуту до полуночи, чтобы переместить файл журнала и переименовать его, указав дату, а затем отправьте сигнал USR1 в Nginx. Это заставит его повторно открыть файлы журналов и создать новый на следующий день.

59 23 * * * mv /var/log/nginx/access.log /var/log/nginx/$(date +%F).access.log && kill -USR1 $(cat /run/nginx.pid)
0
ответ дан 5 December 2019 в 05:21

Теги

Похожие вопросы