Nginx 日志突然变大,通常是访问量、记录内容或配置发生了变化。下面按常见原因 → 排查方式 → 解决办法给你一个系统性的分析。
access.log 快速增长# 查看最近访问 IP 排行
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
✅ 解决:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head
✅ 解决:
error_log 级别被设为 debuggrep error_log nginx.conf
✅ 解决:
error_log /var/log/nginx/error.log warn;
log_format 包含:
grep log_format nginx.conf
✅ 解决:
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
}
ps -ef | grep nginx
✅ 解决:
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_log off;
我可以更精准判断:
access.log 还是 error.log 变大?我可以直接帮你给出定制化的 nginx 配置优化方案。