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/bash
LOG_PATH="/data/nginx/logs"
find "$LOG_PATH" -name "access-*" -type f -mtime +180 -delete
mkdir -p /usr/local/tiedan/bin
touch /usr/local/tiedan/bin/dellog.sh && chmod +x /usr/local/nomax/bin/dellog.sh
tee -a /usr/local/tiedan/bin/dellog.sh << 'EOF'
LOG_PATH="/data/nginx/logs"
find "$LOG_PATH" -name "access-*" -type f -mtime +180 -delete
EOF
cat /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 編輯過