¿Hay alguna forma de enmascarar URL en HAProxy? Me gustaría tener una URL que dirija a mi balanceador de carga, es decirwww.ejemplo.com, redirigir a otra URL que tengo para otra aplicación. Sin embargo, me gustaría que el navegador del usuario aún muestre la URL original (www.ejemplo.com). ¿Cómo haría esto?
Respuesta1
Probablemente puedas hacer esto 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
Sin embargo, probablemente deberías poner la IP que domain2.com
se resuelve en la server
línea para no terminar con un comportamiento extraño.
Respuesta2
En lugar de enmascarar URL, nos dimos cuenta de que podíamos hacerlo más fácilmente simplemente haciendo una redirección en el backend al enviar a un servidor backend. No sé si esto es ideal, pero hasta ahora logró nuestro objetivo. Aquí está el código:
interfaz 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.
interfaz 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.
dominio backend.com.nopath
...
server SERVER IP#:80 redir https://test1.domain.com/webapp check
dominio backend.com.ruta
...
server SERVER IP#:80 check