← 전체 목록
서버백업운영

logrotate 설정으로 Nginx 로그를 자동으로 정리하고 디스크를 지킵니다

ℹ️ 본 글은 정보 제공 목적이며, 광고·제휴 링크가 포함될 수 있습니다.

Nginx 로그 자동 정리 logrotate 설정이 필요했던 건 서버 디스크 사용량 점검 중 /var/log/nginx/ 폴더가 30GB를 넘어있는 것을 발견했을 때였습니다. 수년 치 access.log가 그대로 쌓여 있었습니다. logrotate는 리눅스 표준 로그 관리 도구로, 대부분의 서버에 이미 설치돼 있습니다. Nginx도 기본 logrotate 설정이 있지만, 보관 기간과 압축 여부를 실제 운영에 맞게 조정해야 합니다.

현재 Nginx logrotate 설정 확인

cat /etc/logrotate.d/nginx

기본 설정 내용 확인 후 수정합니다.

최적화된 logrotate 설정

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곳 인프라 전담)