Nginx 日志“丢失数据”通常不是真正被删除,而是没有按你预期的方式记录或轮转导致看起来像丢了。常见原因和排查方向如下:
如果使用了 access_log ... buffer=:
access_log /var/log/nginx/access.log main buffer=32k flush=5s;
✅ 排查:
buffer常见问题:
logrotate 后 Nginx 仍写旧文件(inode 没变)access.log.1,你却在看 access.logreload✅ 排查:
ls -l /var/log/nginx/
lsof | grep access.log
✅ 正确 logrotate 必须包含:
postrotate
systemctl reload nginx
endscript
以下情况默认不记录:
error_page 内部重定向return 444;deny 被拒(部分版本不记 access_log)access_log off;✅ 检查:
location /health {
access_log off;
}
proxy_cachetry_files 命中静态文件但配置异常✅ 建议:
access_log /var/log/nginx/access.log main;
放在 http 或 server 层级统一配置。
✅ 检查:
df -h
df -i
✅ 常见于:
bufferaccess_log off如果你愿意,可以贴出:
nginx.conf 中日志相关配置我可以帮你精确定位原因。