Nginx 日志“没有记录”是常见问题,通常不是 Nginx 完全不写日志,而是配置、路径、权限或请求未命中等原因导致。下面按最常见原因逐一说明,并给出排查方法。
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
检查:
ls -l /var/log/nginx/
如果目录不存在:
mkdir -p /var/log/nginx
chown -R nginx:nginx /var/log/nginx
很多新手只配了 server,但没写 access_log:
server {
listen 80;
server_name example.com;
# 没写 access_log
}
解决:
access_log /var/log/nginx/access.log;
可能误写了:
access_log off;
检查所有配置:
grep -R "access_log" /etc/nginx/
例如:
验证:
curl -I http://你的域名
看返回是否是预期 server。
如果 Nginx 只是反向代理:
location / {
proxy_pass http://backend;
}
Nginx 仍会记录 access_log,除非:
access_log off;return / rewrite 阶段被中断Nginx 运行用户无法写日志:
ps aux | grep nginx
通常是 nginx 或 www-data
修复:
chown nginx:nginx /var/log/nginx/*.log
chmod 644 /var/log/nginx/*.log
access_log /var/log/nginx/access.log buffer=32k flush=5s;
解决:
Nginx 根本没收到请求:
nginx -t
systemctl status nginx
netstat -tunlp | grep 80
# 1. 配置是否正确
nginx -t
# 2. 是否运行中
systemctl status nginx
# 3. 日志文件是否存在
ls -l /var/log/nginx/
# 4. 搜索 access_log 配置
grep -R "access_log" /etc/nginx/
# 5. 手动发请求
curl http://127.0.0.1
# 6. 看日志
tail -f /var/log/nginx/access.log
你可以贴出:
nginx.confserver 配置我可以直接告诉你是哪一行导致没日志。