Nginx日志切割自动清理磁盘

为什么需要Nginx日志切割与自动清理

Nginx默认会把所有访问日志和错误日志写进同一个文件。
时间一长,日志文件可能长到几个GB,不仅占用磁盘,还会拖慢日志查询速度。
更危险的是,磁盘写满后网站会直接报错。
所以,Nginx日志切割自动清理磁盘是每个运维新手必须掌握的基本操作。

前置准备:检查系统环境

你需要一台安装了Nginx的Linux服务器,系统可以是CentOS 7/8、Ubuntu 20.04+等。
大部分发行版都自带 logrotate 工具,用来管理日志轮转。

先确认logrotate是否已安装:

logrotate --version

如果没有输出版本号,可以用包管理器安装:

  • CentOS:yum install logrotate -y
  • Ubuntu:apt install logrotate -y

然后找到Nginx日志默认存放路径,通常是 /var/log/nginx/,里面应该能看到 access.logerror.log

核心操作:配置logrotate规则实现自动切割

进入logrotate配置目录:

cd /etc/logrotate.d/

新建一个名为 nginx 的文件:

sudo vim nginx

写入以下配置(以CentOS为例,其他系统路径相同):

/var/log/nginx/*.log {
    daily              # 每天切割一次
    missingok          # 如果日志丢失不报错
    rotate 30          # 保留最近30个日志文件
    compress           # 切割后压缩旧日志
    delaycompress      # 延迟一天压缩,方便当天查询
    notifempty         # 日志为空就不切割
    create 0640 nginx adm  # 新建日志文件权限和属主
    sharedscripts
    postrotate
        if [ -f /var/run/nginx.pid ]; then
            kill -USR1 `cat /var/run/nginx.pid`
        fi
    endscript
}

配置说明daily 表示每天切一次,
你也可以改用 weeklyrotate 30 表示最多保留30份历史日志,
超过的自动删除。postrotate 脚本在切割后给Nginx发送 USR1 信号,
让它重新打开日志文件,
这一步很关键,
否则Nginx还会往旧文件里写日志。

保存后先手动测试配置是否生效:

sudo logrotate -d /etc/logrotate.d/nginx

如果输出没有明显报错,再真正执行一次:

sudo logrotate -f /etc/logrotate.d/nginx

执行后检查 /var/log/nginx/ 目录,应该能看到压缩过的旧日志,比如 access.log-20250410.gz

避坑指南:常见问题与解决

权限不足:如果日志文件属主是 root,而Nginx以 nginx 用户运行,logrotate可能无法创建新文件。
配置中的 create 0640 nginx adm 确保新文件归nginx用户。

信号没触发postrotate 脚本里的 kill -USR1 必须写到一行,不要换行。
如果Nginx PID文件路径不同(比如是 /var/run/nginx/nginx.pid),要把路径改对。

压缩延迟影响delaycompress 可以让当天的旧日志不立即压缩,方便调试。
如果磁盘极紧张,可以去掉这一行。

效果验证与日常监控

等第二天或者手动触发切割后,你可以用 du -sh /var/log/nginx/ 查看日志目录总大小,看是否下降。
同时观察 access.logerror.log 文件是否重新从0开始。

另一个验证方法:查看系统logrotate执行记录:

sudo cat /var/lib/logrotate/status | grep nginx

会显示上次执行时间和状态。

如果你的Nginx日志量非常大,还可以搭配 cron 设置更频繁的切割(比如每小时),但大多数场景每天一次就够了。

总结:通过logrotate配置 dailyrotate 30compress 和正确的 postrotate 脚本,你就能轻松实现Nginx日志切割自动清理磁盘。
遇到问题先检查日志权限和PID路径。
这套方法稳定运行多年,新手照着做基本不会翻车。

分享到:
上一篇
Nginx缓存配置提升海外访问:Nginx缓存配置指南
下一篇
Nginx负载均衡多服务器分发从配置到验证完整指南
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意