Nginx 日志过大的原因通常可以归结为访问量大、日志配置不合理、未做切割或清理。下面按常见原因逐一说明,并给出对应的解决思路。
access.log 快速增长✅ 表现:
access.log 每秒都在增长error_log /var/log/nginx/error.log debug;
debug 会记录大量内部信息✅ 推荐:
error_log /var/log/nginx/error.log warn;
✅ 结果:
例如:
access_log on;
✅ 改进:
access_log off;
例如:
log_format main '$remote_addr $request $request_time $upstream_response_time ...';
du -sh /var/log/nginx/*
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head
使用 logrotate(Linux 自带)
示例:
/etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
rotate 7
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
nginx -s reload
endscript
}
✅ 含义:
location ~* \.(js|css|png|jpg|gif)$ {
access_log off;
}
error_log /var/log/nginx/error.log warn;
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
find /var/log/nginx -name "*.log.*" -mtime +30 -delete
Nginx 日志过大的核心原因:访问量大 + 没有日志切割 + 不合理的日志配置。
如果你愿意,可以贴出:
nginx.conf我可以帮你针对性优化日志配置。