Debian 上 Nginx 日志为空,通常不是“没装好”,而是请求根本没走到记录日志的阶段,或者日志被重定向/关闭了。下面按最常见到最隐蔽的顺序排查。
Debian 默认路径:
# 访问日志
/var/log/nginx/access.log
# 错误日志
/var/log/nginx/error.log
但有些情况:
sites-enabled 里的虚拟主机,自己定义了 access_loglogrotate 移走了先确认:
ls -lh /var/log/nginx/
看看文件是不是:
systemctl status nginx
如果没运行:
systemctl start nginx
比如:
localhost:8080检查监听:
ss -lntp | grep -E ':80|:443'
curl http://127.0.0.1
如果本地能访问、外网不能 → 网络层问题
配置里可能有:
access_log off;
或:
error_log /dev/null;
全局搜一下:
grep -R "access_log" /etc/nginx/
grep -R "error_log" /etc/nginx/
例如:
server {
listen 80;
server_name example.com;
# 没有 access_log
}
默认不会自动写 access.log
建议显式写:
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
如果配置了:
access_log /var/log/nginx/access.log buffer=32k flush=5m;
→ 短时间请求少时,日志不会立即写入
测试:
curl http://127.0.0.1
sleep 300
或者临时去掉 buffer 看效果。
例如:
location / {
return 444;
}
或:
deny all;
这种:
如果是 Docker:
docker logs nginx
而不是看宿主机 /var/log/nginx
systemctl status nginx
ss -lntp | grep nginx
curl -I http://127.0.0.1
ls -lh /var/log/nginx/
grep -R access_log /etc/nginx
如果你愿意,可以把下面信息发我,我能直接帮你定位:
nginx -T 输出(或关键 server 块)我可以一步一步帮你看到底“卡在哪一步”。