Nginx日志定期清理設(shè)置實(shí)現(xiàn)
1. 日志輪轉(zhuǎn)配置
① 創(chuàng)建 logrotate 配置文件
a. 按天自動(dòng)滾動(dòng)清理
sudo tee /etc/logrotate.d/docker-nginx <<'EOF'
/path/to/your/mount_data/nginx/logs/*.log {
daily # 每天輪轉(zhuǎn)
rotate 30 # 保留30天日志
compress # 壓縮舊日志
delaycompress # 延遲壓縮(僅壓縮上一個(gè)輪轉(zhuǎn)文件)
missingok # 日志不存在時(shí)不報(bào)錯(cuò)
notifempty # 空文件不輪轉(zhuǎn)
create 0640 101 101 # 權(quán)限和用戶(hù)(Nginx容器默認(rèn)UID=101)或使用用戶(hù) root root
sharedscripts # 所有日志處理完后執(zhí)行腳本
postrotate
# 向容器發(fā)送USR1信號(hào),通知Nginx重新打開(kāi)日志文件
docker kill -s USR1 disys-frontend-dev 2>/dev/null || true
endscript
}
EOF
b. 按文件大小自動(dòng)滾動(dòng)清理
sudo tee /etc/logrotate.d/docker-nginx <<'EOF'
/var/ai_disys/microservice-backend/mount_data/nginx/logs/*.log {
size 100M # 關(guān)鍵參數(shù):日志達(dá)到100MB時(shí)觸發(fā)輪轉(zhuǎn)
rotate 10 # 保留10個(gè)歸檔版本
compress # 啟用gzip壓縮
delaycompress # 延遲壓縮上一個(gè)輪轉(zhuǎn)文件
missingok # 日志不存在時(shí)不報(bào)錯(cuò)
notifempty # 空文件不輪轉(zhuǎn)
create 0640 101 101 # 權(quán)限和用戶(hù)(Nginx容器默認(rèn)UID=101)
sharedscripts # 所有日志處理完后執(zhí)行腳本
postrotate
# 向容器發(fā)送USR1信號(hào),通知Nginx重新打開(kāi)日志文件
docker kill -s USR1 disys-frontend-dev 2>/dev/null || true
endscript
}
EOF
關(guān)鍵參數(shù)說(shuō)明:
size 100M:可替換daily實(shí)現(xiàn)按大小輪轉(zhuǎn)(如size 100M+rotate 10)dateext:添加日期后綴(如access.log-20230915.gz)compress:使用gzip壓縮舊日志
② 設(shè)置目錄權(quán)限
sudo chown -R 101:101 /path/to/mount_data/nginx/logs/ sudo chmod -R 755 /path/to/mount_data/nginx/logs/
③ 手動(dòng)測(cè)試配置
# 生成測(cè)試日志(100MB) dd if=/dev/zero bs=1M count=100 >> /path/to/mount_data/nginx/logs/access.log # 強(qiáng)制觸發(fā)輪轉(zhuǎn) sudo logrotate -vf /etc/logrotate.d/docker-nginx # 驗(yàn)證結(jié)果 ls -lh /var/ai_disys/microservice-backend/mount_data/nginx/logs/
2. 日志備份方案
① 定期壓縮備份到其他目錄
sudo tee /usr/local/bin/nginx-log-backup <<'EOF'
#!/bin/bash
BACKUP_DIR="/var/backups/nginx_logs"
mkdir -p $BACKUP_DIR
find /path/to/mount_data/nginx/logs/ -name "*.log.*" -mtime +7 -exec gzip {} \;
rsync -avz /path/to/mount_data/nginx/logs/*.gz $BACKUP_DIR/
EOF
sudo chmod +x /usr/local/bin/nginx-log-backup
② 添加定時(shí)任務(wù)(每天凌晨執(zhí)行)
(crontab -l 2>/dev/null; echo "0 3 * * * /usr/local/bin/nginx-log-backup") | crontab -
3. 高級(jí)功能擴(kuò)展
① 按小時(shí)輪轉(zhuǎn)(高頻日志場(chǎng)景)
# 修改/etc/logrotate.d/docker-nginx hourly rotate 168 # 保留7天(24*7)
② 日志上傳到云存儲(chǔ)
# 在備份腳本中添加(示例:AWS S3) aws s3 sync $BACKUP_DIR s3://your-bucket/nginx_logs/$(date +%Y%m%d)/
③ 日志分析報(bào)警
# 示例:檢測(cè)錯(cuò)誤日志并報(bào)警 grep -i "error" /path/to/mount_data/nginx/logs/error.log | mail -s "Nginx Error Alert" admin@example.com
常見(jiàn)問(wèn)題解決方案
| 問(wèn)題現(xiàn)象 | 原因 | 修復(fù)命令 |
|---|---|---|
| 輪轉(zhuǎn)后無(wú)新日志 | Nginx未接收USR1信號(hào) | docker kill -s USR1 disys-frontend-dev |
| 權(quán)限錯(cuò)誤 | 目錄屬主錯(cuò)誤 | sudo chown -R 101:101 /path/to/logs |
| 日志未壓縮 | gzip未安裝 | sudo apt-get install gzip |
| 備份失敗 | 磁盤(pán)空間不足 | df -h && rsync --delete-during |
到此這篇關(guān)于Nginx日志定期清理設(shè)置實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Nginx日志定期清理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx實(shí)現(xiàn)灰度發(fā)布的多種策略分享
灰度發(fā)布是一種重要的策略,它允許我們?cè)诓挥绊懰杏脩?hù)的情況下逐步推出新功能或更新,本文介紹了Nginx實(shí)現(xiàn)灰度發(fā)布的多種策略,有需要的小伙伴可以了解下2026-04-04
Nginx 遇到502 Bad Gateway 自動(dòng)重啟的腳本代碼
放到crontab里一分鐘執(zhí)行一次。url和cmd根據(jù)自己的改。2010-12-12
Nginx中日志模塊的應(yīng)用和配置應(yīng)用示例
Nginx是一款高性能的HTTP和反向代理服務(wù)器,廣泛應(yīng)用于互聯(lián)網(wǎng)領(lǐng)域,這篇文章主要介紹了Nginx中日志模塊的應(yīng)用和配置,下面通過(guò)一個(gè)簡(jiǎn)單的實(shí)例來(lái)演示Nginx日志模塊的應(yīng)用和配置,需要的朋友可以參考下2024-02-02
關(guān)于Nginx配置ssl證書(shū)實(shí)現(xiàn)https安全訪(fǎng)問(wèn)
這篇文章主要介紹了關(guān)于Nginx配置ssl證書(shū)實(shí)現(xiàn)https安全訪(fǎng)問(wèn),前題條件是擁有服務(wù)器與可以解析到該服務(wù)器的自己的域名,需要的朋友可以參考下2023-04-04

