Nginx如何設置自動清理日志?
作者:管理員 來源:互聯網 發布時間:2025-11-10 10:10:24 點擊數:0
在Nginx中,日志文件(包括訪問日志和錯誤日志)會不斷增長,如果不進行清理,可能會占用大量磁盤空間。以下是如何設置自動清理Nginx日志的幾種方法:
方法一:使用 logrotate
1:創建 logrotate 配置文件
sudo nano /etc/logrotate.d/nginx
2:添加以下配置內容
/var/log/nginx/*.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}配置參數說明:
daily:每天輪轉
missingok:如果日志文件不存在也不報錯
rotate 52:保留52個備份文件(約2個月)
compress:壓縮舊的日志文件
delaycompress:延遲壓縮前一個日志文件
notifempty:空文件不輪轉
create 0640 www-data adm:創建新文件的權限和屬主
postrotate:輪轉后執行的命令,重新打開日志文件
方法二:手動配置更頻繁的輪轉
如果需要更頻繁的輪轉,可以修改配置:
/var/log/nginx/*.log {
hourly
missingok
rotate 168 # 保留7天的每小時日志
compress
delaycompress
notifempty
create 0640 nginx nginx
sharedscripts
postrotate
/bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || true
endscript
}方法三:使用 crontab 自定義清理腳本
1:創建清理腳本
sudo nano /usr/local/bin/nginx_log_clean.sh
#!/bin/bash # 清理超過30天的Nginx日志文件 find /var/log/nginx/ -name "*.log.*" -type f -mtime +30 -delete # 重新加載Nginx(如果需要) # systemctl reload nginx
2:給腳本執行權限
sudo chmod +x /usr/local/bin/nginx_log_clean.sh
3:添加到 crontab
sudo crontab -e
添加以下行(每天凌晨2點執行)
0 2 * * * /usr/local/bin/nginx_log_clean.sh
推薦使用 方法一(logrotate),這是最標準且可靠的日志管理方式。
上一篇:Windows如何遠程國產麒麟操作系統
下一篇:Linux系統命令:主機狀態監控、環境變量、文件傳輸及壓縮和解壓縮
相關內容:
