温馨提示×

linux如何清理nginx日志

小樊
33
2026-09-29 19:19:57
栏目: 智能运维

在 Linux 下清理 Nginx 日志,常见做法有直接清理、日志轮转(推荐)、自动清理几种方式。下面按使用场景说明。


一、最推荐:使用 logrotate(自动清理,不中断 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

✅ 优点:

  • 不中断 Nginx
  • 自动压缩、保留历史
  • 生产环境首选

二、手动清空日志(临时用)

1. 直接清空(不删文件,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

⚠️ 问题:

  • Nginx 仍持有文件句柄
  • 磁盘空间不会立即释放
  • 需重启或 reload Nginx 才重新生成

四、让 Nginx 重新打开日志(清理后必要操作)

如果你用了 rm 或想强制刷新:

nginx -s reload

或:

kill -USR1 $(cat /var/run/nginx.pid)

五、定时自动清理(crontab 示例)

例如每天凌晨清理超过 30 天的日志:

0 0 * * * find /var/log/nginx -name "*.log*" -mtime +30 -delete

六、关闭访问日志(如不需要)

在 nginx.conf 或站点配置中:

access_log off;

❗ 仅建议内网或性能极致场景


总结建议

场景 做法
生产环境 logrotate
临时释放空间 truncate
不推荐 rm + 不 reload

如果你愿意,我可以帮你写一份适合你服务器的 logrotate 配置。

0 踩