我想在几个 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 身份验证。