有没有办法在 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