Apache-2.2

HAProxy 可以負載平衡遠端站點,而它執行在另一個伺服器上的伺服器?

  • January 2, 2013

有點奇怪的問題,我知道這並不理想,但仍然……

我目前有一個使用 Apache 充當 Web 伺服器的虛擬機。這託管了幾個不同的站點,由 Apache 和虛擬主機處理。

我想讓有人玩 HA 代理,負載均衡器在我的 Web 伺服器上,節點在其他地方。我想知道的是:是否可以告訴 HA 代理僅攔截針對某些 URL 的流量?顯然,我將在一個 IP 上執行多個站點,其中只有一個需要通過 HA 代理進行路由。

乾杯。

可以配置 haproxy 前端以通過acl指令評估主機標頭和/或 URI,並將流量轉發到相應的後端。但是 haproxy 無法在同一個 IP 地址上“共享”Apache (80) 使用的 TCP 埠——這僅僅是因為 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 前端使用不同的 IP 地址和/或不同的埠可能比 Apache 使用的更容易。

引用自:https://serverfault.com/questions/462128