nginx按天切割,有兩種方法。一種是用nginx自帶的map進(jìn)行正則匹配,另一種是shell腳本每天進(jìn)行mv移動日志,不過這種需要kill nginx服務(wù),怕有起不來的風(fēng)險,所以不采用。
配置步驟:
http { open_log_file_cache max=100; map $time_iso8601 $logdate { '~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd; default 'date-not-found'; } access_log logs/access-$logdate.log ;}
檢查配置是否正確 執(zhí)行 /usr/local/nginx/sbin/nginx -t
重啟nginx
/usr/local/nginx/sbin/nginx -s stop/usr/local/nginx/sbin/nginx.sh腳本nginx.sh restart
訪問nginx,觀察日志是否成功切割。
設(shè)置cron定時任務(wù)刪除180天的日志記錄
#!/bin/bashLOG_PATH="/data/nginx/logs"find "$LOG_PATH" -name "access-*" -type f -mtime +180 -delete
mkdir -p /usr/local/tiedan/bintouch /usr/local/tiedan/bin/dellog.sh && chmod +x /usr/local/nomax/bin/dellog.shtee -a /usr/local/tiedan/bin/dellog.sh << 'EOF'LOG_PATH="/data/nginx/logs"find "$LOG_PATH" -name "access-*" -type f -mtime +180 -deleteEOFcat /usr/local/tiedan/bin/dellog.sh
把這個腳本加入到定時任務(wù)cron
crontab -e,每月一號凌晨三點執(zhí)行0 3 1 * * /usr/local/nomax/bin/dellog.sh
cat /dev/null > ./access_2025.log
該文章在 2025/9/8 9:04:14 編輯過