HAProxy 负载均衡器上的经过身份验证的代理

HAProxy 负载均衡器上的经过身份验证的代理

我想在几个 http 认证代理之间轮换。但是我无法将其插入配置文件,因为 URL 结构不同。当我删除用户名和密码时,它就可以工作了(但当然会请求用户名和密码)。有没有办法发送凭据?如果我不添加它们,我会收到 407 代理身份验证错误。

global
        daemon
        maxconn 500

defaults
        mode http
        timeout connect 5000ms
        timeout client 50000ms
        timeout         server 50000ms

frontend rotatingproxies
        bind *:3000
        default_backend rotateproxy
        option http_proxy
        option http-use-proxy-header

backend rotateproxy
        option http_proxy 
        server proxyserver user:[email protected]:9999
        server proxyserver user:[email protected]:9999

        balance roundrobin

答案1

这种方式行不通。您需要真实的服务器地址。如果您想添加用户名和密码,有一个解决方案。您需要先手动将它们编码为 base64,然后将生成的字符串添加到 Proxy-Authorization 标头中。例如:

$ echo -n user:pass | openssl enc -a
dXNlcjpwYXNz

backend rotateproxy
   server proxy1 ip1:9999
   server proxy2 ip2:9999
   reqadd Proxy-Authorization:\ Basic\ dXNlcjpwYXNz

但是,您的客户端必须使用 haproxy 作为显式代理,并且您需要删除“option http_proxy”。

答案2

我搜索了HAProxy-1.3 文档,而且它似乎不支持您的要求。

如果您有权访问后端服务器,我建议关闭那里的身份验证,并在 HAProxy 前面添加另一个 Web 服务器(例如 nginx),以仅执行基本的 http 身份验证。

相关内容