Rotazione registro NginX


9

Sto servendo un paio di domini diversi tramite NginX sullo stesso server e ognuno accede al proprio file. Devo impostare uno script per ruotare, comprimere questi file e aggiungerlo a cron.

So che devo fare qualcosa per convincere NginX ad aprire un nuovo file di registro una volta spostato quello vecchio. Qualcuno può darmi la procedura per la rotazione sicura dei file di registro nginx? Suppongo di dover utilizzare logrotate, come posso configurarlo?

Sistema:

  • Ubuntu 9.04 server ed.
  • nginx / 0.7.61

Risposte:


18

È diventato una sorta di semi-standard informale tra i demoni Unix che scaricano e / o ruotano i loro file di registro, quando invii loro un segnale di blocco ( SIGHUP). Nginx non segue questa convenzione alla lettera, ma risponde al USR1segnale allo stesso modo, come documentato sul sito web di Nginx con il titolo Log Rotation .

Quindi, potresti provare qualcosa del genere

kill -s USR1 `pidof nginx`

1
un altro modo, "pkill -USR1 -n -x nginx"
Palani

11

log log 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
}

registro di produzione delle rotaie logrotating:

/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
}

In quale file devo inserire questo?
Emil Stenström,

se si utilizza Ubuntu, si dovrebbe mettere queste righe di codice in questo file: /etc/logrotate.d/nginx. e avrà effetto.
Siwei Shen 申思维

3

Se si utilizza logrotate, aggiungere quanto segue (con la posizione corretta) nella sezione di logrotate.conf di nginx:

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

Secondo la pagina man di logrotate (8)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.