温馨提示×

为何nginx日志突然变大

小樊
41
2026-09-11 13:26:56
栏目: 编程语言

Nginx 日志突然变大,通常不是单一原因,而是访问量、配置、异常请求或系统行为某一方面发生了变化。下面按最常见 → 较少见的顺序帮你梳理原因和排查方法。


一、最常见原因

1️⃣ 流量突然增加(正常 or 异常)

  • 运营活动 / 推广
  • 被爬虫、扫描器、恶意请求攻击
  • 第三方服务频繁回调

排查:

# 看访问量
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

2️⃣ 大量 4xx / 5xx 请求

错误请求也会写日志,而且往往比正常请求更频繁

常见情况:

  • 接口不存在(404)
  • 参数错误(400)
  • 后端挂了(502 / 504)
  • 被扫描(/wp-admin、/.env 等)

排查:

awk '{print $9}' access.log | sort | uniq -c | sort -nr

3️⃣ 日志级别设置过低(debug / info)

如果 error_log 级别是:

error_log /var/log/nginx/error.log debug;

会记录大量内部信息。

✅ 建议:

error_log /var/log/nginx/error.log warn;

4️⃣ 日志格式太详细

例如:

log_format main '$remote_addr - $request - $http_user_agent ...';

如果包含:

  • $request_body
  • $upstream_response_time
  • 长 header

日志会迅速膨胀。


二、配置或运维问题

5️⃣ 日志轮转失败(logrotate 没生效)

常见现象:

  • access.log 几个 G
  • 没有 .1 .2.gz 文件

检查:

ls -lh /var/log/nginx/
cat /etc/logrotate.d/nginx

6️⃣ Nginx 没真正 reload

改了配置但:

nginx -s reload

没执行或失败,导致:

  • 多 worker 写同一个文件
  • 日志异常增长

7️⃣ 反向代理循环 / 重定向风暴

例如:

  • A → B → A
  • rewrite 死循环

表现:

  • 单 IP 极高频请求
  • CPU 飙高

三、系统 / 外部因素

8️⃣ 健康检查太频繁

如:

  • K8s / SLB 每秒探测
  • 未忽略 health 接口日志

✅ 建议:

location /health {
    access_log off;
}

9️⃣ 被刷接口(短信 / 登录 / 搜索)

即使流量不大,也会:

  • 写大量日志
  • 打满磁盘

四、快速定位思路(实战)

# 1. 当前日志大小
du -sh /var/log/nginx/*

# 2. 请求最多的 IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

# 3. 状态码分布
awk '{print $9}' access.log | sort | uniq -c | sort -nr

# 4. 请求最多的 URL
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head

五、你可以告诉我这些,我能精确定位

  • Nginx 版本
  • access / error 哪个变大
  • 是否近期改过配置
  • 是否有反向代理 / 负载均衡
  • 是否能贴几行日志(脱敏)

我可以直接帮你判断是攻击、Bug 还是配置问题

0