Назад | Перейти на главную страницу

Ротация журналов NginX

Я обслуживаю пару разных доменов через NginX на одном сервере, и каждый из них ведет журнал в своем собственном файле. Мне нужно настроить сценарий для поворота, сжатия этих файлов и добавления его в cron.

Я знаю, что мне нужно что-то сделать, чтобы NginX открывал новый файл журнала после перемещения старого. Может ли кто-нибудь дать мне процедуру безопасного ротации файлов журнала nginx? Я предполагаю, что мне нужно использовать logrotate, как мне его настроить?

Система:

Среди демонов Unix стало своего рода неформальным полустандартом, когда они сбрасывают и / или меняют свои файлы журналов, когда вы отправляете им сигнал зависания (SIGHUP). Nginx не следует этому соглашению до буквы, но он отвечает на USR1 сигнал таким же образом, как описано на веб-сайте Nginx под заголовком Вращение журнала.

Итак, вы можете попробовать что-то вроде

kill -s USR1 `pidof nginx`

logrotating логи nginx:

# nginx SIGUSR1: Re-opens the log files.
/opt/nginx/logs/access.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate
    test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
 endscript 
}

/opt/nginx/logs/error.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate  
    test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
  endscript
}

журнал производства рельсов поворотного типа:

/home/app_user/apps/railsapp/log/production.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate
    test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
  endscript
}

Если вы используете logrotate, добавьте следующее (с правильным расположением) в раздел nginx файла logrotate.conf:

postrotate
  kill -s USR1 `cat /location/of/nginx.pid`
endscript

В соответствии с страница руководства logrotate (8)