Como você mascara URLs no HAProxy?

Como você mascara URLs no HAProxy?

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.comresolve na serverlinha 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

informação relacionada