YUM安装Nginx后需手动配置logrotate:创建/etc/logrotate.d/nginx,设daily轮转、保留52个压缩归档,含postrotate发送USR1信号通知Nginx重开日志,并验证配置生效。

YUM 安装 Nginx 后,默认不自带 logrotate 配置文件,日志不会自动轮转,长期运行会导致 /var/log/nginx/ 下的 access.log 和 error.log 持续增长,占用磁盘空间。你需要手动创建并启用 logrotate 配置。
确认 Nginx 日志路径
YUM 安装的 Nginx(如来自 EPEL 或官方仓库)默认日志路径为:
/var/log/nginx/access.log/var/log/nginx/error.log
可通过以下命令验证:
nginx -t -v 2>&1 | grep "conf" # 查看配置加载路径<br>grep "access_log\|error_log" /etc/nginx/nginx.conf
创建 logrotate 配置文件
新建配置文件:/etc/logrotate.d/nginx,内容如下:
/var/log/nginx/*.log {<br> daily<br> missingok<br> rotate 52<br> compress<br> delaycompress<br> notifempty<br> create 0644 nginx nginx<br> sharedscripts<br> postrotate<br> if [ -f /var/run/nginx.pid ]; then<br> kill -USR1 `cat /var/run/nginx.pid`<br> fi<br> endscript<br>}说明关键项:
-
daily:每天轮转一次 -
rotate 52:保留最近 52 个归档(约一年),可按需调整 -
compress:压缩旧日志(.gz) -
delaycompress:延迟压缩,最新一轮不压,方便排查 -
create 0644 nginx nginx:轮转后重建日志文件,权限属主正确 -
postrotate ... kill -USR1:通知 Nginx 重新打开日志文件(必须!否则新日志仍写入旧文件)
测试与启用
执行以下命令验证配置语法并模拟一次轮转:
logrotate -d /etc/logrotate.d/nginx # 调试模式,查看详细过程<br>logrotate -f /etc/logrotate.d/nginx # 强制立即执行一次
检查结果:
- 原日志是否重命名为
access.log-YYYYMMDD - 是否生成空的
access.log且属主为nginx:nginx -
ps aux | grep nginx确认主进程仍在运行(USR1 不重启,只重开日志)
确保 logrotate 定时任务已启用
RHEL/CentOS 系统中,logrotate 默认由 cron 每天执行:
ls /etc/cron.daily/logrotate # 应存在
无需额外操作。若自定义了 crontab 或使用 systemd timer,确保其调用 /usr/sbin/logrotate /etc/logrotate.conf 即可。










