当 nginx 日志太大 时,一般从 日志切割、控制日志量、定期清理、开启压缩 这几个方向处理。下面按 最常用 → 进阶 给你一套完整方案。
logrotate(最推荐,生产必做)nginx 官方和大多数 Linux 发行版都默认支持。
ls /etc/logrotate.d/nginx
如果没有,新建:
vim /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
rotate 7
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
systemctl reload nginx > /dev/null 2>&1
endscript
}
✅ 说明:
daily:每天切割rotate 7:保留 7 天compress: gzip 压缩旧日志reload nginx:防止 nginx 继续写旧文件logrotate -d /etc/logrotate.d/nginx
access_log off;
或只记录错误:
access_log /var/log/nginx/access.log combined buffer=32k flush=5m;
默认 combined 很详细,可以自定义:
http {
log_format minimal '$remote_addr - $request - $status';
access_log /var/log/nginx/access.log minimal;
}
location ~* \.(jpg|jpeg|png|gif|css|js|ico|svg)$ {
access_log off;
}
find /var/log/nginx -name "*.log*" -mtime +7 -delete
crontab -e
0 3 * * * find /var/log/nginx -name "*.log*" -mtime +7 -delete
journalctl --vacuum-size=500M
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "3"
logging:
maxSize: 100Mi
常见原因:
error_log /var/log/nginx/error.log warn;
✅ 必须做
✅ 高并发
如果你愿意,可以告诉我:
我可以 直接给你一份可复制的配置 ✅