说到Nginx日志轮转,最常用的方式就是借助 logrotate 这个工具。它就像一个自动化的日志管家,能帮你压缩、删除旧日志,还能生成新的日志文件,省去手动处理的麻烦。下面就是配置Nginx日志轮转的具体步骤,跟着走一遍就行。

先确认系统上有没有装
logrotate。大多数Linux发行版默认都预装了,要是没有,用包管理器(比如apt-get或yum)装一下就行,几秒钟搞定。接下来,给Nginx单独创建一个logrotate配置文件。在
/etc/logrotate.d/目录下新建一个叫nginx的文件:sudo touch /etc/logrotate.d/nginx用文本编辑器打开这个文件,把下面的配置贴进去:
/var/log/nginx/*.log { daily missingok 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 }这里简单解释一下每个选项的作用:
/var/log/nginx/*.log:指定要轮转的日志文件,匹配这个路径下所有.log结尾的文件。daily:每天轮转一次,你也可以按需改成weekly或monthly。missingok:如果日志文件不存在,直接跳过,不会报错。compress:轮转后把旧日志压缩成.gz格式,节省磁盘空间。delaycompress:延迟压缩——这次轮转后不立刻压缩,等下一次轮转时才压缩上一个版本。这样做的好处是,如果日志还在被写入,不会影响后续操作。notifempty:如果日志文件是空的,就不做轮转,避免生成一堆空文件。create 0640 www-data adm:轮转后创建新的日志文件,权限设为0640,属主为www-data,属组为adm。这个权限和用户组可以根据你的Nginx配置调整。sharedscripts:如果有多个日志文件匹配,只执行一次postrotate脚本。postrotate后面的脚本:轮转完成后,向Nginx主进程发送USR1信号,通知它重新打开日志文件,这样新的日志就能继续写入新文件了。
保存并关闭文件,配置就算完成了。
最后,测试一下配置是否正确:
sudo logrotate -f /etc/logrotate.d/nginx这个命令会强制触发一次日志轮转。如果一切正常,你会看到旧日志被压缩成
.gz文件,同时生成一个新的空日志文件。
至此,Nginx日志轮转就配置好了。之后logrotate会根据你设定的频率自动运行,完全不用操心。当然,如果需要手动触发,随时可以用 sudo logrotate -f /etc/logrotate.d/nginx 来强制执行一次。整个流程清晰简洁,掌握了这个技巧,日志管理就再也不是什么麻烦事了。