当 HAProxy 所运行的服务器托管另一个站点时,它可以对远程站点进行负载平衡吗?

当 HAProxy 所运行的服务器托管另一个站点时,它可以对远程站点进行负载平衡吗?

有点奇怪的问题,我知道这不是理想的,但是仍然......

我目前有一个虚拟机,它使用 Apache 充当 Web 服务器。它托管几个不同的网站,由 Apache 和虚拟主机处理。

我想让某人试用 HA Proxy,将负载均衡器放在我的 Web 服务器上,将节点放在其他地方。我想知道的是:是否可以指示 HA Proxy 仅拦截针对特定 URL 的流量?显然,我将在一个 IP 上运行多个站点,其中只有一个需要通过 HA Proxy 进行路由。

干杯。

答案1

配置 haproxy 前端以通过acl指令评估主机标头和/或 URI,并将流量转发到相应的后端。但是 haproxy 无法在同一 IP 地址上“共享”Apache 使用的 TCP 端口 (80) - 仅仅是因为 TCP 套接字的实现方式。您当然可以在 haproxy 中设置不同的前端 - 一个将流量定向到“nodes-elsewhere”后端,另一个用于您的本地 Apache 后端,如下所示acl

frontend all-sites
  bind *:80
  acl is_external hdr_end(host) -i www.externalplaysite.example.com
  use_backend nodes-elsewhere if is_external
  use_backend local-server if !is_external


backend nodes-elsewhere
  server external-node1 1.2.3.4
  server external-node2 2.3.4.5

backend local-server
  server local-host 127.0.0.1:8080

但如果你想要别人“尝试使用 HAProxy”,他们可能也想尝试配置 - 这可能会破坏您的本地后端。因此,为您的 HAProxy 前端使用与 Apache 不同的 IP 地址和/或端口可能更容易。

相关内容