access_log 关闭,以应对 301 或 302

access_log 关闭,以应对 301 或 302

我正在使用 haproxy 和 nginx。Haproxy 有这个选项来检查我的后端的健康状况:

option httpchk HEAD /lol.txt HTTP/1.0

一切正常,但我不想记录这次健康检查

因此在我的 nginx 配置中我添加:

    location /lol.txt {
    access_log off;
    }

问题是,这个位置返回了 301,所以我一次又一次地得到了这些日志:

 10.1.29.1 - - [15/Mar/2013:06:51:36 +0100] "HEAD /lol.txt HTTP/1.0" 301 0 "-" "-"

您有什么办法可以让 access_log 停止工作吗?

问候。

答案1

您可能有其他位置来处理该请求,但您的请求access_log不适用,或者它可能被另一个access_log指令覆盖。

如果您不想将这些请求传递到后端,请尝试以下操作:

location = /lol.txt {
    access_log off;
    return 'It works!' 200;
}

或者,如果您仍然必须将请求传递给后端:

if ($request_uri = /lol.txt) {
    access_log off;
}

尝试确保这些指令access_log off出现在任何其他access_log指令之后也可能会有所帮助,例如看看移动它是否会产生影响。

希望它能有所帮助,并请报告有效的方法!

答案2

您可以使用类似方法排除3xx日志中的状态map

map $status $log {
    default     1;
    ~^[3]       0;
}

然后更改access_log为:

access_log  /var/log/nginx/access.log combined if=$log;

NGINX 文档启用条件日志记录

相关内容