答え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