Gibt es eine Möglichkeit, URLs in HAProxy zu maskieren? Ich hätte gerne eine URL, die zu meinem Load Balancer führt, d. h.www.beispiel.com, umleiten zu einer anderen URL, die ich für eine andere Anwendung habe. Ich möchte jedoch, dass der Browser des Benutzers weiterhin die ursprüngliche URL anzeigt (www.beispiel.com). Wie würde ich dabei vorgehen?
Antwort1
Sie können dies wahrscheinlich mithilfe von tun 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
Allerdings sollten Sie wahrscheinlich die IP, zu der die domain2.com
Auflösung erfolgt, in die server
Zeile eingeben, damit es nicht zu merkwürdigem Verhalten kommt.
Antwort2
Anstatt eine URL-Maskierung durchzuführen, haben wir festgestellt, dass wir dies einfacher erreichen können, indem wir beim Senden an einen Backend-Server einfach eine Umleitung auf dem Backend durchführen. Ich weiß nicht, ob das ideal ist, aber bisher hat es unser Ziel erreicht. Hier ist der Code:
Frontend 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.
Frontend 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.
Backend-Domäne.com.nopath
...
server SERVER IP#:80 redir https://test1.domain.com/webapp check
Backend-Domäne.com.Pfad
...
server SERVER IP#:80 check