Mat*_*att 6 iis proxy haproxy host-headers
我正在探索使用 HAProxy 作为在 IIS 上运行的一组 web api 前面的平衡器。
我们目前正在使用主机头来正确解析 IIS 上的正确 Web 应用程序。例如,我们可能在同一服务器/端口上运行 otherapp.mycompany.com,但使用主机头 IIS 知道要提供哪个服务。
我对 HAProxy 的最初尝试给我留下了 404 错误,因为我的请求中没有包含主机标头,因此 IIS 提供绑定到给定 IP 的默认站点,而不是按主机名解析。
修复给我留下了这样的东西:
frontend localnodes
bind *:80
mode http
default_backend nodes
backend nodes
mode http
balance roundrobin
option forwardfor
reqirep ^Host: Host:\ node1.myapp.mycompany.com
server web01 node1.myapp.mycompany.com:80
Run Code Online (Sandbox Code Playgroud)
这对单个后端很有用,但我对如何根据哪个后端提供请求包含正确的主机头感到头疼:
backend nodes
mode http
balance roundrobin
option forwardfor
reqirep ^Host: Host:\ node1.myapp.mycompany.com
server web01 node1.myapp.mycompany.com:80
server web02 node2.myapp.mycompany.com:80
Run Code Online (Sandbox Code Playgroud)
每当node2使用上述内容时都不起作用,因为它在 IIS 中无法正确解析(在这种情况下,node2 位于不同的服务器上,因此 IP 不同。事实上,如果它们在同一服务器/IP 上运行,我怀疑请求工作“工作”,但它们都将由每个主机标头的 node1 提供服务)。
checks 还需要基于后端提供正确的主机标头,这将如何完成?编辑:我正在使用 HA-Proxy 版本 1.7.9 2017/08/18
让我再介绍一下背景。我们过去只myapp.mycompany.com提供 api 请求。我们需要扩展它。我们的客户仍然会调用myapp.mycompany.com,但这只会指向 HAProxy,它会将其平衡为node1.myapp.mycompany.com和node2.myapp.mycompany.com。我们当前的服务器配置让我们在每台服务器上绑定一个 IP 地址,因此我们使用主机头来解析。
gf_*_*gf_ 13
我不确定以下是否有效,现在无法测试,但也许这仍然有帮助。(我稍后会再看一看):
解决方案1:
backend nodes
mode http
balance roundrobin
option forwardfor
http-request set-header Host node1.myapp.mycompany.com if { srv_id 1 }
http-request set-header Host node2.myapp.mycompany.com if { srv_id 2 }
server web01 node1.myapp.mycompany.com:80
server web02 node2.myapp.mycompany.com:80
Run Code Online (Sandbox Code Playgroud)
解决方案2:
注意 官方不推荐使用此方法。阅读关于http-send-name-header的评论:据报道,该指令当前被用作覆盖传出请求中的 Host 标头字段的方法;虽然这个技巧一段时间以来一直被认为是该功能的副作用,但它没有得到官方支持,并且可能在未来版本中不再起作用,这取决于该功能引起的技术困难...... [Credits to rustyx。 ]
backend nodes
mode http
balance roundrobin
option forwardfor
http-send-name-header Host
server node1.myapp.mycompany.com node1.myapp.mycompany.com:80
server node1.myapp.mycompany.com node2.myapp.mycompany.com:80
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26653 次 |
| 最近记录: |