Existe alguma maneira de mascarar URL no HAProxy? Gostaria de ter uma URL direcionando para meu balanceador de carga, ou sejawww.exemplo.com, redirecione para outro URL que tenho para outro aplicativo. No entanto, gostaria que o navegador do usuário ainda exibisse o URL original, (www.exemplo.com). Como eu faria isso?
Responder1
Você provavelmente pode fazer isso usando 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
Porém, você provavelmente deve colocar o IP que domain2.com
resolve na server
linha para não ter um comportamento estranho.
Responder2
Em vez de mascarar URL, percebemos que poderíamos fazer isso mais facilmente, apenas redirecionando no backend ao enviar para um servidor backend. Não sei se isso é ideal, mas cumpriu nosso objetivo até agora. Aqui está o código:
interface 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.
interface 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.
domínio de back-end.com.nopath
...
server SERVER IP#:80 redir https://test1.domain.com/webapp check
back-end domínio.com.path
...
server SERVER IP#:80 check