在运行 Nginx 的 Web 服务器时,随着时间推移,访问日志(access.log)和错误日志(error.log)会不断增长,可能占用大量磁盘空间,甚至影响系统性能。因此,定期对 Nginx 日志进行分割(也叫日志轮转)是运维中的基本操作。
本文将用最通俗易懂的方式,教小白如何使用 Linux 系统自带的 logrotate 工具自动分割 Nginx 日志文件,无需手动干预。
logrotate 是 Linux 系统中专门用于日志轮转的工具,大多数发行版默认已安装。它支持按天、周、月或文件大小自动切割日志,并可压缩旧日志。
在终端执行:
logrotate --version 如果未安装,可使用以下命令安装(以 Ubuntu/Debian 为例):
sudo apt update && sudo apt install logrotate 通常,Nginx 的 logrotate 配置文件位于 /etc/logrotate.d/nginx。如果没有,我们可以手动创建:
sudo nano /etc/logrotate.d/nginx 在文件中写入以下内容(请根据你的实际日志路径调整):
/var/log/nginx/*.log { daily missingok rotate 30 compress delaycompress notifempty create 0640 www-data adm sharedscripts postrotate [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` endscript} 配置说明:
daily:每天轮转一次rotate 30:保留最近30个日志文件compress:启用 gzip 压缩旧日志delaycompress:延迟一天压缩(确保当天日志可读)create 0640 www-data adm:创建新日志文件时设置权限和属主postrotate ... endscript:通知 Nginx 重新打开日志文件(关键!)可以手动运行 logrotate 测试:
sudo logrotate -d /etc/logrotate.d/nginx 使用 -d 参数只会模拟运行,不会真正操作文件。若无报错,说明配置正确。
若想立即执行一次轮转(用于测试),可使用:
sudo logrotate -f /etc/logrotate.d/nginx 虽然可以用 shell 脚本 + cron 定时任务实现,但不如 logrotate 稳定可靠。这里仅作了解:
#!/bin/bashLOG_DIR="/var/log/nginx"DATE=$(date +%Y%m%d)mv $LOG_DIR/access.log $LOG_DIR/access.log.$DATEtouch $LOG_DIR/access.logchown www-data:adm $LOG_DIR/access.logkill -USR1 $(cat /var/run/nginx.pid) 然后通过 crontab -e 添加每日执行任务。但这种方式缺乏压缩、保留数量控制等高级功能,容易出错。
使用 logrotate 是管理 Nginx日志分割 的最佳实践。它稳定、灵活、自动化程度高,是 Linux 运维的标准工具。掌握 logrotate配置 和 Nginx日志管理 技能,能让你的服务器更高效、更安全。
提示:记得定期检查 /var/log/nginx/ 目录,确认日志是否按预期分割和压缩。
本文由主机测评网于2025-12-01发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025121743.html