Nginx 日志清理主要有 手动清理 和 自动轮转 两种方式,推荐生产环境使用 logrotate 自动轮转。下面按常见场景说明。
常见路径:
/var/log/nginx/access.log
/var/log/nginx/error.log
确认路径:
nginx -T 2>/dev/null | grep log
> /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.1
rm -f /var/log/nginx/*.gz
⚠️ 删除前确认 Nginx 已关闭或不再写入该文件
ls /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
nginx -s reload
endscript
}
含义:
daily:每天轮转rotate 7:保留 7 份compress:压缩历史日志nginx -s reload:重新打开日志文件logrotate -vf /etc/logrotate.d/nginx
日志写入容器,自动随容器生命周期管理。
docker run -v /host/logs:/var/log/nginx nginx
清理方式:
truncate -s 0 /host/logs/access.log
或使用宿主机 logrotate。
access_log off;
access_log /var/log/nginx/access.log combined if=$loggable;
server {
access_log /var/log/nginx/www_access.log;
}
du -sh /var/log/nginx/*
ls -lh /var/log/nginx/
| 场景 | 推荐方式 |
|---|---|
| 生产环境 | ✅ logrotate |
| 紧急清理 | truncate |
| Docker | 不挂载日志 |
| 防止暴涨 | 关闭/条件记录 |
如果你愿意,可以告诉我:
我可以给你一份 可直接使用的 logrotate 配置。