nginx 日志“没有记录”通常可以从配置、权限、路径、请求是否到达、是否被缓存/截断这几个方向排查。下面按常见原因一步步来。
nginx -T 2>/dev/null | grep -E "access_log|error_log"
重点关注:
access_log 路径error_log 路径server / location 里被覆盖或关闭access_log off;
如果有这一行,就不会记录访问日志。
server {
access_log /var/log/nginx/xxx.log;
}
你可能在看 /var/log/nginx/access.log,但实际写到了别的地方。
✅ 解决:直接用 nginx -T 找到真实路径。
ls -l /var/log/nginx/
如果没有日志文件:
touch /var/log/nginx/access.log
touch /var/log/nginx/error.log
chown nginx:nginx /var/log/nginx/*.log
(用户可能是 www-data,取决于系统)
ps -ef | grep nginx
看 worker process 的用户(如 nginx / www-data)
chown -R nginx:nginx /var/log/nginx
chmod 755 /var/log/nginx
nginx -T | grep listen
ss -lntp | grep nginx
curl 127.0.0.1
如果有日志,说明外部请求没进来。
例如:
location / {
return 444;
}
或:
location / {
proxy_pass http://backend;
access_log off;
}
这种不会写 access log。
access_log /var/log/nginx/access.log main buffer=32k flush=5s;
✅ 解决:
buffertail -f /var/log/nginx/error.log
如果这里也没内容:
nginx -t
systemctl reload nginx
# 或
nginx -s reload
nginx -T 找到真实日志路径access_log off;reload如果你愿意,可以把下面信息发我,我可以直接帮你定位:
nginx -T 输出(重点 server 段)我可以帮你逐行看配置。