Rotación de registro de NginX

9

Estoy sirviendo un par de dominios diferentes a través de NginX en el mismo servidor y cada uno inicia sesión en su propio archivo. Necesito configurar un script para rotar, comprimir estos archivos y agregarlos a cron.

Sé que tengo que hacer algo para que NginX abra un nuevo archivo de registro una vez que muevo el anterior. ¿Alguien me puede dar el procedimiento para rotar de forma segura los archivos de registro de nginx? Supongo que necesito usar logrotate, ¿cómo lo configuro?

Sistema:

  • Ubuntu 9.04 servidor ed.
  • nginx / 0.7.61
John F. Miller
fuente

Respuestas:

18

Se ha convertido en una especie de semi-estándar informal entre los demonios de Unix que eliminan y / o giran sus archivos de registro, cuando les envía una señal de bloqueo ( SIGHUP). Nginx no sigue esta convención al pie de la letra, pero responde a la USR1señal de la misma manera, como se documenta en el sitio web de Nginx bajo el título Rotación de registro .

Entonces, podrías probar algo como

kill -s USR1 `pidof nginx`
Jörg W Mittag
fuente
1
otra forma, "pkill -USR1 -n -x nginx"
Palani
11

logrotating registros de 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 de producción de rieles de rotación:

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

fuente
¿En qué archivo debo poner esto?
Emil Stenström
si se utiliza ubuntu, se debería poner estas líneas de código en este archivo: /etc/logrotate.d/nginx. y surtirá efecto.
Siwei Shen 申思维
3

Si usa logrotate, agregue lo siguiente (con la ubicación correcta) en la sección de nginx de logrotate.conf:

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

Según la página del comando man logrotate (8)

Lamnk
fuente