我正在使用 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 文档启用条件日志记录