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.log 和 error.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 表示每天切一次,
你也可以改用 weekly。rotate 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.log 和 error.log 文件是否重新从0开始。

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

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

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

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

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

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

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意