Wie maskieren Sie URLs in HAProxy?

Wie maskieren Sie URLs in HAProxy?

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.comAuflösung erfolgt, in die serverZeile 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

verwandte Informationen