Nginx日志分割和自动清理旧日志可以通过配置logrotate工具来实现。logrotate是一个Linux系统用于管理日志文件的工具,它可以自动压缩、删除和邮件通知旧的日志文件。以下是如何配置logrotate来自动清理Nginx旧日志的步骤:
确保logrotate已安装在你的系统上。在大多数Linux发行版中,logrotate已经预装。如果没有,你可以使用包管理器(如apt、yum或zypper)来安装它。
创建一个新的logrotate配置文件,或者在已有的配置文件中添加Nginx的配置。通常,logrotate配置文件位于/etc/logrotate.d/目录下。你可以创建一个名为nginx的新文件:
sudo touch /etc/logrotate.d/nginx
使用文本编辑器打开新创建的配置文件:
sudo nano /etc/logrotate.d/nginx
将以下内容粘贴到配置文件中,根据需要进行调整:
/var/log/nginx/*.log {
daily
missingok
rotate 7
compress
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:如果日志文件不存在,不会产生错误。rotate 7:保留7个旧日志文件。compress:压缩旧日志文件。notifempty:如果日志文件为空,不进行分割。create 0640 www-data adm:创建新的日志文件,设置权限和属主。sharedscripts:如果有多个日志文件,只执行一次postrotate脚本。postrotate:在分割日志文件后执行的脚本。这里发送USR1信号给Nginx进程,通知它重新打开日志文件。保存并关闭配置文件。
测试logrotate配置是否正确:
sudo logrotate -f /etc/logrotate.d/nginx
如果没有错误,说明配置正确。
现在,logrotate将每天自动分割Nginx日志文件,并删除7天前的旧日志文件。你可以根据需要调整配置文件中的选项。