Nginx 日志轮转通常是通过 logrotate 工具来实现的。logrotate 是一个 Linux 系统用于管理日志文件的工具,它可以自动压缩、删除和创建新的日志文件。以下是如何配置 Nginx 日志轮转的步骤:
确保 logrotate 已经安装在你的系统上。在大多数 Linux 发行版中,logrotate 已经预装了。如果没有,你可以使用包管理器(如 apt-get 或 yum)来安装它。
创建一个 logrotate 配置文件专门用于 Nginx。在 /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:指定需要轮转的日志文件路径。daily:每天轮转一次日志文件。missingok:如果日志文件不存在,不会产生错误。compress:压缩轮转后的日志文件。delaycompress:延迟压缩,直到下一次轮转。notifempty:如果日志文件为空,不进行轮转。create 0640 www-data adm:创建新的日志文件,权限为 0640,属主为 www-data,属组为 adm。sharedscripts:如果有多个日志文件,只执行一次 postrotate 脚本。postrotate:轮转后执行的脚本。这里发送 USR1 信号给 Nginx 主进程,通知它重新打开日志文件。保存并关闭配置文件。
测试 logrotate 配置是否正确:
sudo logrotate -f /etc/logrotate.d/nginx
这个命令会强制执行 Nginx 日志轮转。如果一切正常,你应该能看到压缩后的旧日志文件和新的空日志文件。
现在,Nginx 日志轮转已经配置好了。logrotate 会根据配置文件中的设置自动进行日志轮转。你也可以手动触发日志轮转,只需运行 sudo logrotate -f /etc/logrotate.d/nginx 命令即可。