Load-Balancing
你如何在 HAProxy 中屏蔽 URL?
有沒有辦法在 HAProxy 中進行 URL 屏蔽?我想要一個指向我的負載均衡器的 URL,即www.example.com,重定向到另一個應用程序的另一個 URL。但是,我希望使用者的瀏覽器仍顯示原始 URL(www.example.com)。我該怎麼辦?
我們意識到我們可以通過在發送到後端伺服器時在後端進行重定向來更輕鬆地完成此操作,而不是進行 URL 屏蔽。我不知道這是否理想,但到目前為止它實現了我們的目標。這是程式碼:
前端 http_in
... acl is_test1.domain.com hdr(host) -i test1.domain.com # Host & Domain only check. acl is_path_null path / # No path check use_backend domain.com.nopath if is_test1.domain.com is_path_null # If Host & Domain matches and path is null. use_backend domain.com.path if is_test1.domain.com !is_path_null # If Host & Domain matches and path is not null.
前端 https_in
... acl is_path_null path / # No path check use_backend domain.com.nopath if { ssl_fc_sni -i test1.domain.com } is_path_null # If Host & Domain matches and path is null. use_backend domain.com.path if { ssl_fc_sni -i test1.domain.com } !is_path_null # If Host & Domain matches and path is not null.
後端 domain.com.nopath
... server SERVER IP#:80 redir https://test1.domain.com/webapp check
後端 domain.com.path
... server SERVER IP#:80 check
您可能可以使用
reqrep
.frontend FE bind 10.10.10.10:80 mode http acl is_domain.com hdr(host) -i domain.com use_backend BE:domain.com if is_domain.com backend BE:domain.com mode http reqrep ^([^\ ]*)\ (.*) \1\ /path/\2 server domain2.com:80
不過,您可能應該將
domain2.com
解析為的 IP 放在server
一行中,這樣您就不會遇到奇怪的行為。