NginX 로그 회전


9

동일한 서버에서 NginX를 통해 몇 가지 다른 도메인을 제공하고 있으며 각각 고유 한 파일에 기록합니다. 회전 할 스크립트를 설정하고 이러한 파일을 압축하여 cron에 추가해야합니다.

이전 로그 파일을 이동 한 후 NginX가 새 로그 파일을 열려면 무언가를 수행해야한다는 것을 알고 있습니다. 누군가 나에게 nginx 로그 파일을 안전하게 회전시키는 절차를 줄 수 있습니까? logrotate를 사용해야한다고 생각합니다. 어떻게 구성합니까?

체계:

  • 우분투 9.04 서버 에디션.
  • nginx / 0.7.61

답변:


18

유닉스 데몬은 행업 신호 ( SIGHUP) 를 보낼 때 로그 파일을 플러시 및 / 또는 회전시키는 일종의 비공식적 인 준 표준이되었습니다 . Nginx는이 규칙을 문자에 따르지 않지만 USR1Nginx 웹 사이트에서 Log Rotation 이라는 제목으로 문서화 된 것과 같은 방식으로 신호에 응답합니다 .

그래서, 당신은 같은 것을 시도 할 수 있습니다

kill -s USR1 `pidof nginx`

1
또 다른 방법은 "pkill -USR1 -n -x nginx"
Palani

11

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
}

이 파일을 어느 파일에 넣어야합니까?
Emil Stenström

우분투를 사용하는 경우 다음 코드 줄을이 파일에 넣어야합니다 /etc/logrotate.d/nginx. 적용됩니다.
Siwei Shen 申思维

3

logrotate를 사용하는 경우 다음 위치 (올바른 위치)를 loginate.conf의 nginx 섹션에 추가하십시오.

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

logrotate (8) 매뉴얼 페이지 에 따르면

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.