在 Linux 下清理 Nginx 日志,常见做法有直接清理、日志轮转(推荐)、自动清理几种方式。下面按使用场景说明。
Nginx 通常已集成 logrotate,配置文件一般在:
/etc/logrotate.d/nginx
示例配置(系统自带类似):
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
logrotate -f /etc/logrotate.d/nginx
✅ 优点:
> /var/log/nginx/access.log
> /var/log/nginx/error.log
或:
truncate -s 0 /var/log/nginx/access.log
✅ 推荐,不会影响 Nginx 进程
rm -f /var/log/nginx/access.log
⚠️ 问题:
如果你用了 rm 或想强制刷新:
nginx -s reload
或:
kill -USR1 $(cat /var/run/nginx.pid)
例如每天凌晨清理超过 30 天的日志:
0 0 * * * find /var/log/nginx -name "*.log*" -mtime +30 -delete
在 nginx.conf 或站点配置中:
access_log off;
❗ 仅建议内网或性能极致场景
| 场景 | 做法 |
|---|---|
| 生产环境 | logrotate |
| 临时释放空间 | truncate |
| 不推荐 | rm + 不 reload |
如果你愿意,我可以帮你写一份适合你服务器的 logrotate 配置。