温馨提示×

nginx日志为何突然变多

小樊
49
2026-09-05 17:54:18
栏目: 编程语言

nginx 日志突然变多,通常不是 nginx 本身的问题,而是请求量或配置发生了变化。常见原因可以按“由外到内”来排查:


一、外部流量变化(最常见)

1. 访问量真的变大了

  • 业务推广、活动、爬虫、API 被调用
  • 搜索引擎或恶意爬虫高频访问

排查:

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

看是不是某些 IP 特别多。


2. 被攻击或扫描

  • CC 攻击
  • 漏洞扫描(/wp-admin、/.env、/phpmyadmin 等)
  • 恶意 bot

典型现象:

  • 大量 404
  • 同一 IP 高频请求
  • User-Agent 很奇怪

二、nginx 配置变化

3. 日志级别被改高

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

debug / info 会记录大量内容。

检查:

grep error_log nginx.conf

4. 多 location / 重写导致重复日志

  • rewrite 循环
  • 内部重定向(index、try_files)
  • proxy_pass 后再次记录

5. access_log 被重复配置

例如:

access_log /var/log/nginx/access.log;
# 在 server / location 里又写了一遍

三、应用层问题

6. 后端报错导致重试

  • 502 / 504
  • upstream 超时
  • nginx 重试请求

表现:

  • error.log 猛增
  • access.log 中同一请求多次出现

7. 健康检查频繁

  • 云厂商 LB
  • k8s liveness / readiness
  • 监控探活

四、日志没轮转(看起来“突然多”)

8. logrotate 失效

  • 磁盘满
  • 权限问题
  • 日志一直追加未切割

检查:

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

五、快速定位思路(推荐)

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

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

# 3. 看 URL
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head

# 4. 看时间分布
awk '{print $4}' access.log | cut -d: -f1-3 | sort | uniq -c

六、常见结论分布

  • 70%:流量 / 爬虫 / 攻击
  • 15%:配置错误(日志级别、重复)
  • 10%:后端异常导致重试
  • 5%:logrotate 问题

如果你愿意,可以把:

  • nginx 版本
  • 相关 nginx.conf / server 配置
  • 日志样例(脱敏)

发出来,我可以直接帮你判断是哪一种。

0