Nginx 로그 자동 정리 logrotate 설정이 필요했던 건 서버 디스크 사용량 점검 중 /var/log/nginx/ 폴더가 30GB를 넘어있는 것을 발견했을 때였습니다. 수년 치 access.log가 그대로 쌓여 있었습니다. logrotate는 리눅스 표준 로그 관리 도구로, 대부분의 서버에 이미 설치돼 있습니다. Nginx도 기본 logrotate 설정이 있지만, 보관 기간과 압축 여부를 실제 운영에 맞게 조정해야 합니다.
cat /etc/logrotate.d/nginx
기본 설정 내용 확인 후 수정합니다.
sudo nano /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily # 매일 회전
missingok # 로그 파일 없어도 오류 무시
rotate 14 # 14일치 보관
compress # 압축 (gzip)
delaycompress # 현재 로그는 압축 연기 (다음 회전 때 압축)
notifempty # 빈 파일은 회전 안 함
create 0640 www-data adm # 새 로그 파일 권한
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
핵심 설정:
daily: 매일 로그를 새 파일로 분리rotate 14: 14개(14일치)만 보관, 그 이상은 삭제compress: 이전 로그를 gzip으로 압축 (용량 90% 절약)# 설정 문법 확인
sudo logrotate -d /etc/logrotate.d/nginx
# 강제 실행 (즉시 테스트)
sudo logrotate -f /etc/logrotate.d/nginx
-d 옵션은 실제 실행 없이 어떻게 동작할지 시뮬레이션합니다.
logrotate를 설정해도 이미 쌓인 대용량 로그는 별도로 정리해야 합니다.
# 현재 로그 크기 확인
ls -lh /var/log/nginx/
# 크기 큰 로그 파일 압축 또는 삭제 전 확인
du -sh /var/log/nginx/*.log
# 오래된 압축 파일 삭제
find /var/log/nginx/ -name "*.gz" -mtime +30 -delete
logrotate는 설정 후 dailyd 또는 cron.daily를 통해 매일 자동 실행됩니다. 한 번 설정해두면 로그 관리를 신경 쓰지 않아도 됩니다.
AI가 초안을 생성하고, 의료기관 인프라 운영자가 1차 데이터 기반으로 최종 검수·승인합니다.
작성·검수: WavePix 운영자 (의료기관 3곳 인프라 전담)