HaProxy ProxyProtocol 和 Varnish 没有响应
HaProxy ProxyProtocol and Varnish not respond
我有一个接受代理连接的 HaProxy
frontend f1
bind *:443 accept-proxy
default_backend http_varnish
而且,在同一个实例中,我有清漆
backend http_varnish
mode http
balance roundrobin
server varnish *:6081 check
问题是 varnish 没有响应并且超时。
我尝试在 varnish
中打开另一个端口
#varnish
..... -a :6088,PROXY -T .......
我不明白为什么,如果作为后端我直接向 apache 发送请求它工作正常,而 varnish 没有响应。
显然,如果我删除 accept-proxy,并且不使用代理协议,清漆工作正常。
您配置 HAProxy 的方式允许传入连接使用 PROXY 协议。
您需要做的是配置 HAProxy 通过 PROXY 协议连接到后端。
只需将 send-proxy-v2
添加到您的服务器定义中,如下所示:
backend http_varnish
mode http
balance roundrobin
server varnish 192.168.1.100:6088 check send-proxy-v2
您还必须更新 Varnish 所在的端点。在这种情况下,我把它变成了 192.168.1.100:6088
。请相应地修复此问题并确保使用正确的主机名和端口。
成功完成后,您就可以开始受益于 Varnish 中的 PROXY 意识。 Varnish 中的 vmod_proxy
模块允许您获取有关客户端连接的信息。参见 http://varnish-cache.org/docs/6.0/reference/vmod_generated.html#vmod-proxy
最后可以查看是否通过TLS建立连接,如下图:
sub vcl_recv {
if(proxy.is_ssl()) {
//Do stuff
} else {
//Do other stuff
}
}
X-Forwarded-For
header也会包含原始客户端的IP。
长话短说:好处很多。
我有一个接受代理连接的 HaProxy
frontend f1
bind *:443 accept-proxy
default_backend http_varnish
而且,在同一个实例中,我有清漆
backend http_varnish
mode http
balance roundrobin
server varnish *:6081 check
问题是 varnish 没有响应并且超时。 我尝试在 varnish
中打开另一个端口#varnish
..... -a :6088,PROXY -T .......
我不明白为什么,如果作为后端我直接向 apache 发送请求它工作正常,而 varnish 没有响应。
显然,如果我删除 accept-proxy,并且不使用代理协议,清漆工作正常。
您配置 HAProxy 的方式允许传入连接使用 PROXY 协议。
您需要做的是配置 HAProxy 通过 PROXY 协议连接到后端。
只需将 send-proxy-v2
添加到您的服务器定义中,如下所示:
backend http_varnish
mode http
balance roundrobin
server varnish 192.168.1.100:6088 check send-proxy-v2
您还必须更新 Varnish 所在的端点。在这种情况下,我把它变成了 192.168.1.100:6088
。请相应地修复此问题并确保使用正确的主机名和端口。
成功完成后,您就可以开始受益于 Varnish 中的 PROXY 意识。 Varnish 中的 vmod_proxy
模块允许您获取有关客户端连接的信息。参见 http://varnish-cache.org/docs/6.0/reference/vmod_generated.html#vmod-proxy
最后可以查看是否通过TLS建立连接,如下图:
sub vcl_recv {
if(proxy.is_ssl()) {
//Do stuff
} else {
//Do other stuff
}
}
X-Forwarded-For
header也会包含原始客户端的IP。
长话短说:好处很多。