Apache-2.2
HAProxy 可以負載平衡遠端站點,而它執行在另一個伺服器上的伺服器?
有點奇怪的問題,我知道這並不理想,但仍然……
我目前有一個使用 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 使用的更容易。