在 Nginx 中“禁用访问日志”通常有两种理解:完全关闭访问日志,或对特定请求/路径不记录。下面分别说明。
在 http、server 或 location 块中设置:
access_log off;
server {
listen 80;
server_name example.com;
access_log off;
location / {
root /usr/share/nginx/html;
}
}
✅ 这样该
server下的所有请求都不会写访问日志。
location /healthz {
access_log off;
return 200 "ok";
}
location ~* \.(js|css|png|jpg|gif|ico)$ {
access_log off;
}
http {
map $request_uri $loggable {
default 1;
~^/static/ 0;
~^/healthz 0;
}
access_log /var/log/nginx/access.log main if=$loggable;
}
✅ 只有
$loggable = 1的请求才会写日志
http {
access_log off;
}
⚠️ 会影响所有站点,不利于排查问题。
nginx -t
systemctl reload nginx
access_log off 是关闭日志,不是“写空日志”error_log)不受影响,仍然建议保留如果你有具体场景(如 Docker、K8s、负载均衡、API 服务),可以告诉我,我可以给你更合适的配置示例。