【问题标题】:HaProxy ProxyProtocol and Varnish not respondHaProxy ProxyProtocol 和 Varnish 没有响应
【发布时间】:2021-07-16 12:56:01
【问题描述】:

我有一个接受代理连接的 HaProxy

frontend f1
    bind *:443 accept-proxy
    default_backend http_varnish

在同一个例子中,我有清漆

backend http_varnish
   mode http
   balance roundrobin
   server varnish *:6081 check

问题是清漆没有响应并且超时。 我尝试在 varnish 中打开另一个端口

#varnish
..... -a :6088,PROXY -T .......

我不明白为什么,如果作为后端我直接向 apache 发送请求,它可以正常工作,而 varnish 没有响应。

显然,如果我删除了接受代理,并且不使用代理协议,varnish 就可以正常工作。

【问题讨论】:

    标签: load-balancing haproxy varnish varnish-vcl


    【解决方案1】:

    您配置 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 中的代理意识。 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 标头还将包含原始客户端的 IP。

    长话短说:很多好处。

    【讨论】:

    • 好吧,我觉得自己很蠢 :)。问题是服务器清漆 *:6081 检查是否足以插入 ip 服务器清漆 127.0.0.1:6081 检查现在即使没有它 'send-proxy-v2' 也可以工作 谢谢
    猜你喜欢
    • 2012-10-24
    • 2017-03-05
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    • 2014-05-25
    • 2015-12-25
    • 2022-01-04
    相关资源
    最近更新 更多