Nginx 日志为空(access.log / error.log 没有内容)通常有以下几种常见原因,按出现频率从高到低说明:
这是最常见的原因。
✅ 排查:
ps aux | grep nginx
netstat -lntp | grep nginx
curl http://127.0.0.1
Nginx 实际写日志的位置,和你看的不是同一个文件。
常见情况:
include conf.d/*.confserver 块配置了不同 access_log✅ 检查:
nginx -T | grep -E "access_log|error_log"
配置中可能有:
access_log off;
或:
access_log /var/log/nginx/access.log main buffer=32k flush=5m;
✅ 缓冲未到时间,日志不会立刻写入。
Nginx worker 进程用户(如 www-data、nginx)无法写文件。
✅ 检查:
ls -l /var/log/nginx/
ps aux | grep nginx
✅ 修复示例:
chown -R nginx:nginx /var/log/nginx
例如:
location / {
return 444;
}
或:
deny all;
这种请求 不会写 access_log。
某些错误被内部重定向,不记录或只记录到别的地方。
logging driver✅ 查看:
docker logs nginx
某些日志按天切割,时区不对可能看起来“空的”。
如果你愿意,可以贴出:
nginx -T 输出我可以直接帮你定位是哪一条原因。