HAProxy 有沒有辦法進行 URL 封鎖?我想要一個指向我的負載平衡器的 URL,即www.example.com,重定向到我為另一個應用程式擁有的另一個 URL。但是,我希望用戶的瀏覽器仍然顯示原始 URL,(www.example.com)。我該怎麼辦呢?
答案1
您也許可以使用 來做到這一點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
不過,您可能應該將解析的 IP 放入domain2.com
該行中server
,這樣您就不會出現奇怪的行為。
答案2
我們意識到,透過在發送到後端伺服器時在後端進行重定向,我們可以更輕鬆地做到這一點,而不是進行 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.
後端網域.com.nopath
...
server SERVER IP#:80 redir https://test1.domain.com/webapp check
後端網域.com.path
...
server SERVER IP#:80 check