温馨提示×

如何禁用nginx访问日志

小樊
37
2026-10-05 14:13:13
栏目: 编程语言

在 Nginx 中“禁用访问日志”通常有两种理解:完全关闭访问日志,或对特定请求/路径不记录。下面分别说明。


一、全局禁用访问日志(最简单)

在 http、server 或 location 块中设置:

access_log off;

示例(server 级别禁用)

server {
    listen 80;
    server_name example.com;

    access_log off;

    location / {
        root /usr/share/nginx/html;
    }
}

✅ 这样该 server 下的所有请求都不会写访问日志。


二、只对某些请求禁用访问日志

1️⃣ 对特定路径不记录

location /healthz {
    access_log off;
    return 200 "ok";
}

2️⃣ 对静态资源不记录

location ~* \.(js|css|png|jpg|gif|ico)$ {
    access_log off;
}

3️⃣ 根据条件不记录(推荐用 map)

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;
}

⚠️ 会影响所有站点,不利于排查问题。


四、注意事项

  1. 修改配置后必须重载:
    nginx -t
    systemctl reload nginx
    
  2. access_log off 是关闭日志,不是“写空日志”
  3. 错误日志(error_log)不受影响,仍然建议保留

如果你有具体场景(如 Docker、K8s、负载均衡、API 服务),可以告诉我,我可以给你更合适的配置示例。

0 踩