/
nginx log를 rotate 해서 일자별로 관리(logrotate)
nginx log를 rotate 해서 일자별로 관리(logrotate)
대개의 nginx 패키지는 nginx용 log rotate 스크립트를 설치하지 않습니다.
이로 인해 로그가 꽉 차서 서비스가 불능이 되거나 시스템 장애가 발생할 수 있어서 제 블로그에 nginx 용 log rotate 를 설정한 과정을 정리해 봅니다.
전역 로그 설정
nginx 의 가상 호스트 설정에는 다음과 같이 웹 서버의 로그 파일을 기록하도록 설정했습니다.
server { root /var/www/www.lesstif.com; listen 443 ssl http2; server_name www.lesstif.com; charset utf-8; access_log /var/log/nginx/lesstif.com-ssl.access.log combined; error_log /var/log/nginx/lesstif.com-ssl.error.log notice;
방문자가 꽤 있다보니 로그 파일이 금방 G 단위를 넘어가서 다음과 같이 로테이트 설정을 했습니다.
logrotate 설정
먼저 에티터를 열고 /etc/logrotate.d/nginx 파일을 만들고 다음 내용 추가합니다.
- missingok : 로그 파일이 없어도 에러를 내지 않음
- rotate 52: 로그 파일을 52개까지만 보관(53일 이전것은 삭제), 필요한 경우 숫자를 조정해서 로그 보관 일수를 변경
- compress: 압축해서 보관
create 640 nginx nginx: 새로 로그 파일 생성시 640 모드로 생성하고 소유자, 그룹은 nginx
실제 nginx 웹 서버의 구동 계정과 맞춰야 하며 잘못 설정했을 경우 nginx 가 로그를 기록할 수 없습니다.
- notifempty: 빈 로그파일은 로테이트 하지 않습니다.
postrotate: rotate 작업을 마친후에 실행할 스크립트를 적어줍니다. nginx 의 경우 SIGUSR1 을 받으면 로그 파일을 새로 읽으므로 새로 만들어진 로그 파일에 로그를 기록합니다.
이 부분이 제대로 설정되어 있지 않으면 nginx 는 이미 오픈한 로그 파일에 계속 기록합니다. 이로 인해 예전 로그 파일에 내용이 쌓이므로 주의해야 합니다.
정상 설정 여부를 테스트하기 위해 다음 명령어 실행합니다.
logrotate -d -f /etc/logrotate.d/nginx
- -d, --debug : 디버그 모드, 실제 로그 파일을 변경하지는 않고 처리 과정만 표시합니다.
정상적으로 설정됐다면 /etc/cron.daily/logrotate 파일이 있으므로 별도로 크론에 등록하지 않아도 매일 log 파일 rotate 를 실행됩니다.
같이 보기
, multiple selections available,
Related content
nginx 로드 밸런싱 설정 (load balancing)
nginx 로드 밸런싱 설정 (load balancing)
More like this
nginx POST data 로깅 남기기
nginx POST data 로깅 남기기
More like this
nginx + php-fpm 환경에서 가상 호스트(Virtual Host) 쉽게 구성하기
nginx + php-fpm 환경에서 가상 호스트(Virtual Host) 쉽게 구성하기
More like this
nginx 와 nodejs 연동
nginx 와 nodejs 연동
More like this
엔진엑스 가상 호스트 설정(nginx Virtual Host Setup)
엔진엑스 가상 호스트 설정(nginx Virtual Host Setup)
More like this
nginx HTTP 로 들어오면 강제로 HTTPS 로 전환하도록 설정하기(force redirect to SSL)
nginx HTTP 로 들어오면 강제로 HTTPS 로 전환하도록 설정하기(force redirect to SSL)
More like this