在 Debian 上 Nginx 不记录日志,通常不是“没产生”,而是配置、权限或路径的问题。下面按最常见原因逐项排查。
Nginx 有两类日志:
不同问题要分开看。
检查站点配置:
grep -R access_log /etc/nginx/
如果你看到类似:
access_log off;
那 Nginx 就是故意不记录。
✅ 解决:
access_log /var/log/nginx/access.log;
错误示例(不生效):
http {
server {
location / {
access_log /var/log/nginx/access.log;
}
}
}
✅ 正确位置(server 或 http):
server {
access_log /var/log/nginx/access.log;
}
Debian 默认日志目录:
/var/log/nginx/
检查:
ls -ld /var/log/nginx
如果目录不存在:
sudo mkdir -p /var/log/nginx
sudo chown -R www-data:adm /var/log/nginx
sudo chmod 750 /var/log/nginx
Debian 默认运行用户:
user www-data;
如果日志文件属主不是 www-data 或 adm:
sudo chown www-data:adm /var/log/nginx/*.log
try_files + internal 导致“看起来没记录”例如:
location /api/ {
internal;
}
这种请求 外部访问不会记录。
error_log /var/log/nginx/error.log warn;
✅ 调试时可改为:
error_log /var/log/nginx/error.log debug;
⚠️ debug 会非常占磁盘,仅临时用
Debian 用 systemd 管理 Nginx:
journalctl -u nginx
有些错误 只在这里显示。
sudo nginx -t
sudo systemctl reload nginx
❌ 只 restart 不够 ✅ 必须 reload 或 restart
nginx -t
ls -l /var/log/nginx
ps aux | grep nginx
grep access_log /etc/nginx/sites-enabled/*
journalctl -u nginx
你可以贴出:
nginx -T 输出(或关键 server 段)cat /etc/os-release)我可以直接告诉你 哪一行导致不记录。