Nginx Logrotate 配置用于自动轮转、压缩和删除旧的 Nginx 日志文件,以防止日志文件过大占用磁盘空间。以下是一个详细的配置说明和案例。

1. 创建 Logrotate 配置文件

通常,Nginx 的 Logrotate 配置文件位于 /etc/logrotate.d/nginx

2. 配置文件内容

以下是一个典型的 Nginx Logrotate 配置文件示例:

/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    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
}

3. 配置项说明

  • daily: 日志文件每天轮转一次。

  • missingok: 如果日志文件不存在,不报错。

  • rotate 14: 保留最近 14 天的日志文件。

  • compress: 轮转后的日志文件使用 gzip 压缩。

  • delaycompress: 延迟压缩,即下一次轮转时才压缩上一次的日志文件。

  • notifempty: 如果日志文件为空,不进行轮转。

  • create 0640 www-data adm: 创建新的日志文件时,设置权限为 0640,所有者为 www-data,组为 adm

  • sharedscripts: 在所有日志文件轮转完成后,执行一次 postrotate 脚本。

  • postrotate/endscript: 在日志轮转后执行的脚本。这里使用 kill -USR1 通知 Nginx 重新打开日志文件。

4. 手动测试 Logrotate 配置

可以使用以下命令手动测试 Logrotate 配置是否正确:

logrotate -d /etc/logrotate.d/nginx

5. 强制运行 Logrotate

如果需要立即执行日志轮转,可以使用以下命令:

logrotate -f /etc/logrotate.d/nginx

6. 日志轮转后的文件

轮转后的日志文件会被重命名为 access.log.1access.log.2.gz 等,旧的日志文件会被压缩并保留指定天数。

通过以上配置,Nginx 的日志文件将自动轮转、压缩和删除,确保日志文件不会无限增长。

本篇文章内容来源于:Nginx Logrotate:日志归档配置详细说明以及案例