Linux怎么配置Nginx日志自动切分 Linux下Logrotate工具详解

阿萱同学_6075

阿萱同学_6075

2026-05-11

644人浏览

原创

logrotate 配置必须放在 /etc/logrotate.d/ 才能被 cron 自动执行;应单独为每个日志文件配置、避免通配符,使用 dateext dateyesterday dateformat -%y-%m-%d 实现按天归档,并在 postrotate 中用 kill -usr1 安全重载 nginx。

linux怎么配置nginx日志自动切分 linux下logrotate工具详解

logrotate 配置文件必须放在 /etc/logrotate.d/ 才会被自动加载

系统默认通过 /etc/cron.daily/logrotate 每天执行一次,而这个脚本会读取 /etc/logrotate.conf,里面有一行 include /etc/logrotate.d —— 这意味着只有放在这里的配置才会被识别。直接改 /etc/logrotate.conf 主文件虽然也能生效,但不推荐:它容易被系统更新覆盖,且不符合服务隔离原则。

常见错误是把 nginx 配置写在别的路径(比如 /root/nginx.logrotate),然后手动运行 logrotate -f 测试成功,就以为部署好了——其实 cron 永远不会执行它。

  • 正确做法:用 sudo tee /etc/logrotate.d/nginx 写入配置
  • 确认权限为 644,属主属组为 root:root
  • 不要给配置文件加 .conf 后缀,logrotate 只认文件名本身(如 nginx)

postrotate 里用 kill -USR1 而不是 systemctl reload

Nginx 收到 USR1 信号后会重新打开日志文件句柄,这是原子操作、零停机;而 systemctl reload 会触发 worker 进程平滑重启,可能丢请求,还依赖 systemd 环境(比如某些精简版容器或 OpenRC 系统根本没 systemctl)。

关键点在于获取 master 进程 PID:不能硬编码路径,要优先查 pid 配置项。如果 Nginx 启动时没指定 pid,默认是 /var/run/nginx.pid 或 /usr/local/nginx/logs/nginx.pid,得根据实际安装路径判断。

  • 安全写法:if [ -f /var/run/nginx.pid ]; then kill -USR1 $(cat /var/run/nginx.pid); fi
  • 更健壮的写法(兼容多路径):pidfile=$(nginx -t 2>&1 | grep "pid" | awk '{print $NF}'); [ -f "$pidfile" ] && kill -USR1 $(cat "$pidfile")
  • 避免在 postrotate 里写 systemctl restart nginx —— 这会中断连接,且和日志切割无关

dateext 和 dateformat 必须配合 daily 或 hourly 才生效

只加 dateext 不够:logrotate 默认用数字后缀(access.log.1、access.log.2),加了 dateext 才会变成 access.log-2026-04-26。但如果你同时写了 daily 和 dateformat %Y-%m-%d,它生成的日期是“轮转发生当天”的日期;而加 dateyesterday 才会让文件名显示昨天的日期(更符合“按天归档”的语义)。

Linux Ai Server
Linux Ai Server

Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。

下载

注意:dateformat 的格式字符串必须用 % 开头,且不能包含空格或非法字符,否则 logrotate 直接报错退出,整条配置失效。

  • 推荐组合:daily dateext dateyesterday dateformat -%Y-%m-%d
  • 错误示例:dateformat "_%Y_%m_%d"(下划线开头会导致文件名解析失败)
  • 测试是否生效:手动运行 sudo logrotate -vf /etc/logrotate.d/nginx,看新文件名是否含日期

日志路径通配符要小心 * 匹配范围

配置里写 /var/log/nginx/*.log 看似方便,但如果有 access.log、error.log、proxy.log,logrotate 会把它们当做一个组来处理——rotate 数、compress、postrotate 全部共用一套逻辑。这通常不是你想要的:比如 error.log 很小,不该和 access.log 一起压缩;或者你只想对 access.log 做 dateext,error.log 保持数字后缀。

更稳妥的做法是为每个日志文件单独写一段配置块,用注释区分开。这样各管各的,互不干扰。

  • 错误写法:/var/log/nginx/*.log { daily rotate 7 ... }
  • 正确写法:分别写两段,各自指定完整路径
  • 路径中含变量(如 $HOME)或 shell 表达式(如 $(date))会被忽略——logrotate 不解析 shell

真正麻烦的是 postrotate 里调用外部命令失败却无提示:logrotate 默认静默忽略错误,除非加 -v 参数。所以第一次部署后务必手动跑一次 logrotate -vf,盯着输出看有没有 “error” 或 “skipping” 字样。否则你以为切分正常,其实 postrotate 根本没执行成功,Nginx 还在往旧文件写。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux nginx

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.27

403

5

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3607

6

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

2023.08.04

6325

6

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

581

5

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.07.09

1496

5

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

2024.08.07

3978

3

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

2026.01.13

122

12

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

2026.01.13

477

23

Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建
Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建

本指南详解Nginx在Windows、macOS及Linux系统的安装全流程。涵盖官方包解压、Homebrew一键部署、APT/YUM源配置及Docker容器化方案。无论新手或开发者,均可快速搭建运行环境,掌握跨平台核心指令,为后续配置与调优奠定坚实基础。

2026.03.16

159

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习