nginx 日志“不记录”一般不是 nginx 坏了,而是配置、权限或路径问题。可以按下面顺序排查:
很多服务器有多份 nginx 配置:
nginx -t
看输出里的配置文件路径,比如:
/etc/nginx/nginx.conf
确保你改的是正在用的那份。
在 nginx.conf 里看:
access_log off;
error_log off;
如果有 off,当然不记录。
server {
access_log off;
}
或
location / {
access_log off;
}
这会导致不记录。
✅ 正确示例:
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
ls -l /var/log/nginx/
如果没有:
touch /var/log/nginx/access.log
常见用户:
www-data(Debian/Ubuntu)nginx(CentOS)修复权限:
chown -R www-data:www-data /var/log/nginx
chmod 755 /var/log/nginx
有时候“没日志”是因为:
测试:
curl http://localhost/
再看日志。
nginx 有日志缓冲:
access_log /var/log/nginx/access.log buffer=32k;
可能几分钟后才写。
可临时改成:
access_log /var/log/nginx/access.log;
改完配置必须:
nginx -s reload
或
systemctl reload nginx
如果连 error.log 都没有:
tail -f /var/log/nginx/error.log
一般能直接看到原因。
✅ access_log 被 off
✅ 改错配置文件
✅ 日志目录无权限
✅ docker 里日志在容器里
✅ 用了 return 444; 不写日志
✅ 静态资源被 try_files 直接返回
如果你愿意,可以把:
nginx -T 配置(脱敏)
发出来,我可以直接帮你定位是哪一行的问题。