首页 > 编程语言 >Nginx日志分割自动清理旧日志方法

Nginx日志分割自动清理旧日志方法

来源:互联网 2026-07-16 07:02:06

使用Linux系统自带的logrotate工具可自动分割Nginx日志并清理旧日志。在/etc/logrotate.d/目录下创建配置文件,设置daily、rotate7、compress等参数,保留最近7天压缩日志,分割后向Nginx发送USR1信号重新打开日志文件。配置完成后每日自动执行。

Nginx日志分割与自动清理旧日志并不复杂,关键在于选对工具。Linux系统内置的logrotate即可完成自动压缩、删除甚至邮件通知旧日志,省去手动操作。以下直接说明操作步骤。

Nginx日志分割自动清理旧日志方法

长期稳定更新的攒劲资源: >>>点此立即查看<<<

确认logrotate是否安装

先检查系统是否已安装logrotate。大多数Linux发行版默认预装,若未安装,使用包管理器(apt、yum或zypper)快速安装即可。

创建专属配置文件

logrotate的配置文件通常位于/etc/logrotate.d/目录下。新建一个名为nginx的文件:

sudo touch /etc/logrotate.d/nginx

用文本编辑器打开该文件:

sudo nano /etc/logrotate.d/nginx

添加配置参数

将以下配置粘贴到文件中,并根据实际需求调整参数:

/var/log/nginx/*.log {
    daily
    missingok
    rotate 7
    compress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        if [ -f /var/run/nginx.pid ]; then
            kill -USR1 `cat /var/run/nginx.pid`
        fi
    endscript
}

配置项说明

  • /var/log/nginx/*.log:指定要处理的Nginx日志路径,通配符匹配所有.log文件。
  • daily:每日执行一次日志分割。
  • missingok:日志文件不存在时跳过,不报错。
  • rotate 7:保留最近7个旧日志文件,超出部分自动删除。
  • compress:对旧日志执行gzip压缩,节省磁盘空间。
  • notifempty:日志文件为空时不执行任何操作。
  • create 0640 www-data adm:分割后创建新的空日志文件,权限设为0640,属主www-data,属组adm。
  • sharedscripts:当配置多个日志路径时,postrotate脚本仅执行一次,避免重复。
  • postrotateendscript:分割完成后向Nginx主进程发送USR1信号,使其重新打开日志文件。该步骤很关键,否则Nginx会继续向已归档的旧文件写入日志。

保存并验证

保存并关闭文件后,测试配置是否有效:

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

若无错误提示,说明配置生效。使用-f选项强制立即执行,方便验证。

自动运行与灵活调整

配置完成后,logrotate将每天自动分割Nginx日志,并只保留最近7天的压缩包。rotate数值和daily也可按需改为weeklymonthly,灵活度很高。总结:优先使用系统自带工具,无需手动编写脚本,省心且可靠。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。