Nginx日志轮转配置方法

作者:技术拾光时间:2026-06-03 15:25:07浏览:135

使用logrotate配置Nginx日志轮转,可自动压缩、删除和轮转日志。配置步骤包括:创建/etc/logrotate.d/nginx文件,设置每日轮转、保留7份、延迟压缩、创建新日志并发送USR1信号,最后强制测试配置。该工具依赖cron定时执行,避免磁盘写爆并保留历史日志。

在Nginx日志管理中,日志文件持续增大导致磁盘空间告急、检索缓慢是常见痛点。利用系统自带的logrotate工具,可以高效实现日志轮转、压缩与自动清理,有效缓解存储压力。以下从配置到验证,完整介绍Nginx日志轮转的部署步骤。

Nginx日志轮转配置方法

logrotate是大多数Linux发行版默认集成的日志管理工具,功能清晰:按预设规则自动压缩、删除、轮转日志文件,避免因日志积压导致磁盘溢出。正确配置后,运维人员无需手动干预。

第一步:确认logrotate已安装

多数环境下logrotate已预装。以Debian/Ubuntu为例,可通过以下命令确认或安装:

sudo apt-get install logrotate

若系统已存在,终端会提示已是最新版本。

第二步:为Nginx创建独立配置文件

logrotate建议在/etc/logrotate.d/目录下为每个服务单独配置,便于管理且互不干扰。使用以下命令创建Nginx专属配置文件:

sudo nano /etc/logrotate.d/nginx

第三步:写入核心轮转规则

在配置文件中加入以下内容:

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

关键参数说明:

  • daily:每日轮转一次。可按需改为weekly(每周)或hourly(每小时)。
  • rotate 7:保留最近7份轮转日志,更早的自动删除。
  • compress 与 delaycompress:前者启用压缩,后者延迟一轮压缩(最新轮转的日志不立即压缩,便于近期分析;下次轮转时再压缩)。
  • create 0640 www-data adm:轮转后自动创建新空日志文件并设置权限与属主属组,防止Nginx因无法写入而报错。
  • postrotate 脚本:轮转完成后通过USR1信号平滑通知Nginx重新打开日志文件,避免重启导致连接中断。

第四步:测试配置有效性

配置完成后,使用强制轮转命令验证语法与逻辑:

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

若命令无报错,则说明配置正确。可前往/var/log/nginx/目录检查是否生成了带日期后缀的压缩文件。

第五步:确保定时任务正常运行

logrotate依赖cron触发,默认通过/etc/cron.daily/logrotate脚本每天执行一次。确认该文件存在且具有可执行权限即可,无需额外操作。

完成上述配置后,Nginx日志轮转即可自动运行。合理设置轮转策略既能避免磁盘空间被日志占满,又能保留足够的日志历史用于回溯分析,显著提升运维效率。