使用Linux系统自带的logrotate工具可自动分割Nginx日志并清理旧日志。在/etc/logrotate.d/目录下创建配置文件,设置daily、rotate7、compress等参数,保留最近7天压缩日志,分割后向Nginx发送USR1信号重新打开日志文件。配置完成后每日自动执行。
Nginx日志分割与自动清理旧日志并不复杂,关键在于选对工具。Linux系统内置的logrotate即可完成自动压缩、删除甚至邮件通知旧日志,省去手动操作。以下直接说明操作步骤。

长期稳定更新的攒劲资源: >>>点此立即查看<<<
先检查系统是否已安装logrotate。大多数Linux发行版默认预装,若未安装,使用包管理器(apt、yum或zypper)快速安装即可。
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:指定要处理的Nginx日志路径,通配符匹配所有.log文件。daily:每日执行一次日志分割。missingok:日志文件不存在时跳过,不报错。rotate 7:保留最近7个旧日志文件,超出部分自动删除。compress:对旧日志执行gzip压缩,节省磁盘空间。notifempty:日志文件为空时不执行任何操作。create 0640 www-data adm:分割后创建新的空日志文件,权限设为0640,属主www-data,属组adm。sharedscripts:当配置多个日志路径时,postrotate脚本仅执行一次,避免重复。postrotate到endscript:分割完成后向Nginx主进程发送USR1信号,使其重新打开日志文件。该步骤很关键,否则Nginx会继续向已归档的旧文件写入日志。保存并关闭文件后,测试配置是否有效:
sudo logrotate -f /etc/logrotate.d/nginx
若无错误提示,说明配置生效。使用-f选项强制立即执行,方便验证。
配置完成后,logrotate将每天自动分割Nginx日志,并只保留最近7天的压缩包。rotate数值和daily也可按需改为weekly或monthly,灵活度很高。总结:优先使用系统自带工具,无需手动编写脚本,省心且可靠。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述