温馨提示×

Nginx日志为何突然变大

小樊
45
2026-07-27 19:19:11
栏目: 编程语言

Nginx 日志突然变大,通常是访问量、记录内容或配置发生了变化。下面按常见原因 → 排查方式 → 解决办法给你一个系统性的分析。


一、最常见原因

1️⃣ 访问量突然增加

  • 原因:
    • 正常流量高峰(活动、推广)
    • 被爬虫、扫描器、恶意请求刷量
  • 表现:
    • access.log 快速增长
  • 排查:
# 查看最近访问 IP 排行
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

✅ 解决:

  • 限制频率(limit_req)
  • 封禁恶意 IP
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

2️⃣ 被恶意扫描 / 攻击

  • 特征:
    • 大量 404 / 400
    • 请求路径奇怪(wp-admin、.env、php 等)
  • 排查:
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head

✅ 解决:

  • 关闭无用 location
  • 使用 WAF / fail2ban

3️⃣ 开启了 debug 或详细日志

  • 原因:
    • error_log 级别被设为 debug
  • 排查:
grep error_log nginx.conf

✅ 解决:

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

4️⃣ 日志格式变大(记录字段变多)

  • 原因:
    • 自定义 log_format 包含:
      • request_body
      • header
      • upstream_response_time
  • 排查:
grep log_format nginx.conf

✅ 解决:

  • 精简日志格式
  • 只记录必要字段

5️⃣ 没有做日志切割(logrotate 失效)

  • 原因:
    • 日志一直追加,没有按天切割
  • 排查:
ls -lh /var/log/nginx/

✅ 解决:

cat /etc/logrotate.d/nginx

示例:

/var/log/nginx/*.log {
    daily
    rotate 7
    missingok
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        nginx -s reload
    endscript
}

6️⃣ 反向代理 / upstream 导致日志翻倍

  • 原因:
    • 同时记录:
      • 前端请求
      • upstream 请求
  • 排查:
ps -ef | grep nginx

✅ 解决:

  • 只记录最终请求
  • 或拆分日志

7️⃣ 静态资源未缓存

  • 原因:
    • js / css / 图片每次都请求
  • 排查:
awk '{print $7}' access.log | grep -E "\.(js|css|png|jpg)"

✅ 解决:

location ~* \.(js|css|png|jpg)$ {
    expires 30d;
}

二、快速排查清单(推荐顺序)

# 1. 看哪个日志大
du -sh /var/log/nginx/*

# 2. 看访问量
wc -l access.log

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

# 4. 看请求路径
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head

# 5. 看日志级别
nginx -T | grep error_log

三、应急方案(立刻见效)

✅ 立即清空日志(不删文件)

: > /var/log/nginx/access.log
: > /var/log/nginx/error.log

✅ 临时关闭 access 日志

access_log off;

四、你可以直接告诉我

我可以更精准判断:

  1. access.log 还是 error.log 变大?
  2. 增长速度是 MB/小时 还是 GB/天
  3. 是否最近改过 nginx 配置?
  4. 是否使用了 反向代理 / 负载均衡

我可以直接帮你给出定制化的 nginx 配置优化方案

0