温馨提示×

Nginx如何实现日志轮转

小樊
45
2025-12-30 14:05:56
栏目: 编程语言

Nginx日志轮转可以通过配置logrotate工具来实现。logrotate是一个用于管理日志文件的系统工具,它可以自动压缩、删除和创建新的日志文件。以下是如何为Nginx配置日志轮转的步骤:

  1. 确保已经安装了logrotate。在大多数Linux发行版中,logrotate已经预装。如果没有安装,可以使用以下命令安装:

    对于基于Debian的系统(如Ubuntu):

    sudo apt-get install logrotate
    

    对于基于RPM的系统(如CentOS、Fedora):

    sudo yum install logrotate
    
  2. 创建一个logrotate配置文件,专门用于Nginx。在/etc/logrotate.d/目录下创建一个名为nginx的文件:

    sudo nano /etc/logrotate.d/nginx
    
  3. 将以下内容粘贴到nginx文件中,并根据需要进行修改:

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

    这里的配置表示:

    • 每天轮转日志文件(daily
    • 如果日志文件丢失,不要报错(missingok
    • 保留7天的日志文件(rotate 7
    • 使用gzip压缩旧的日志文件(compress
    • 如果日志文件为空,不进行轮转(notifempty
    • 创建新的日志文件,权限为0640,属主为nginx,属组为adm(create 0640 nginx adm
    • 在轮转日志之前执行postrotate脚本
    • 向Nginx主进程发送USR1信号,通知它重新打开日志文件(kill -USR1 \cat /var/run/nginx.pid``)
  4. 保存并关闭文件。

  5. 测试logrotate配置是否正确。运行以下命令:

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

    如果没有错误信息,说明配置正确。

现在,Nginx日志轮转已经配置完成。logrotate会自动按照配置的时间间隔(在这个例子中是每天)进行日志轮转。

0