在运行nginx服务器时,日志文件会随着时间的推移而不断增大。为了有效管理这些日志文件,防止它们占用过多磁盘空间,我们需要定期对其进行切分。Logrotate是Linux系统中用于管理日志文件的强大工具,它可以自动切分、压缩、删除和邮寄日志文件。

以下是使用Logrotate配置nginx日志自动切分的具体步骤和配置:

配置步骤

  1. 打开终端。
  2. 使用文本编辑器创建或编辑Logrotate配置文件,例如:sudo vim /etc/logrotate.d/nginx
  3. 将以下配置粘贴到编辑器中:
/home/work/nginx/logs/*.log {
    daily
    missingok
    rotate 3
    compress
    delaycompress
    notifempty
    create 0640 root root
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /home/work/nginx/logs/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}
  1. 保存并关闭编辑器。

验证配置

为了验证Logrotate配置是否正确,你可以使用以下命令进行模拟执行,查看将要执行的操作:

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

如果一切正常,你可以使用以下命令立即执行Logrotate配置:

sudo logrotate /etc/logrotate.d/nginx

配置参数解释

  • /home/work/nginx/logs/*.log:指定要管理的日志文件路径和模式,这里匹配该目录下所有以.log结尾的文件。
  • daily:设置日志文件的切割频率为每天。
  • missingok:如果日志文件丢失,不会报错继续下一个操作。
  • rotate 3:保留3份旧日志,超出数量的旧日志将被删除。
  • compress:轮转后的旧日志文件将被压缩。
  • delaycompress:延迟压缩功能,不会立即压缩轮转的日志文件。
  • notifempty:如果日志文件为空,不进行轮转。
  • create 0640 root root:轮转后创建一个新日志文件,并设置权限为0640,所属用户和组为root。
  • sharedscriptspostrotate/endscript块:在所有日志文件轮转后运行脚本,用于发送信号给nginx,让其打开新的日志文件。

通过这样的配置,你可以实现nginx日志文件的自动切分管理,提高系统的可维护性并节省磁盘空间。