Haproxy 设置每个源服务器的主机头

Haproxy 设置每个源服务器的主机头

我们正在尝试为每个原始服务器设置主机标头,我们可以为每个后端设置,但我们在 Azure 应用服务上使用默认名称,因此该服务只会响应其自己的主机名,例如

http-request set-header Host example1.azurewebsites.net # 表示原始服务器 1

http-request set-header Host example2.azurewebsites.net # 用于原始服务器 2

但是,找不到任何在源服务器上设置它的方法

服务器 svr_example1 xx.xx.xx.xx:443 id 10 权重 10 maxconn 25 cookie exa1 检查 ssl 验证无

服务器 svr_example2 xx.xx.xx.xx:443 id 10 权重 10 maxconn 25 cookie exa1 检查 ssl 验证无

就像是

服务器 svr_example1 xx.xx.xx.xx:443 id 10 权重 10 maxconn 25 cookie exa1 检查 ssl 验证无 http 请求设置标头主机 example1.azurewebsites.net

服务器 svr_example2 xx.xx.xx.xx:443 id 11 权重 10 maxconn 25 cookie exa1 检查 ssl 验证无 http 请求设置标头主机 example2.azurewebsites.net

使用 haproxy 版本 1.8.28

答案1

它们是单独的指令,您必须将它们放在单独的行上,例如:

backend svr_example1
        server svr_example1 xx.xx.xx.xx:443 id 10 weight 10 maxconn 25 cookie exa1 check ssl verify none
        http-request set-header Host example1.azurewebsites.net

请注意,只有当 HAProxy 终止 TLS 时,您才能执行此操作。如果您正在通过 TLS,则无法执行此操作。

答案2

只是为了更新,最终实施了@Michael H 的建议,使用 2 个后端,每个后端都有自己的原始服务器和标头信息,然后在前端使用 nbsrv 来决定 BE 是否有效并从那里做出决定。

    acl beExampleDead1 nbsrv(S_be_Example1) lt 1
    acl beExampleDead2 nbsrv(S_be_Example1) lt 1

然后使用 acl 作为规则的一部分来决定后端

杰伊

相关内容