HAProxy 1.7 Umleitung/Neuschreiben bestimmter Domänen mit Map-Dateien

HAProxy 1.7 Umleitung/Neuschreiben bestimmter Domänen mit Map-Dateien

Ich bin neu bei HAProxy und möchte Anfragen in Map-Dateien definierter Domänen umleiten. Ein kurzes Beispiel: In meiner Datei redirect.map:

abc.com xyz.com
def.ru idk.com

Wenn der Benutzer also eine Anfrage an die Domain abc.com oder def.ru sendet, wird er an die definierte Domain umgeleitet. Wenn er jedoch asd.com anfordert, sollte keine Umleitung erfolgen. Mein Ziel ist es, diese Umleitungen in einer Map-Datei zu definieren, damit sie leicht geändert werden können.

Als nächstes möchte ich dasselbe mit URI-Umschreibungen machen. So etwas wie:

http-request set-uri X if Y from rewrite.map

Meine Map-Datei sieht also folgendermaßen aus:

 (my X variable)    (my Y variable)
/abc/def/specific  www.mydomain.com/specific

Habe ich mit HAProxy überhaupt die Möglichkeit dies zu tun?

Antwort1

http-request redirect location https://%[hdr(host),map(/etc/haproxy/rewrite.map)]%[capture.req.uri] code 301 if { hdr(host),map(/etc/haproxy/rewrite.map) -i -m found }

Derhdr(x)bringenliest den Anforderungsheader xund gibt den gefundenen Wert zurück. (Technisch gesehen liest es das letzte Vorkommen dieses Headers, aber der HostHeader sollte nur einmal vorkommen.)

DermapKonverternimmt den vorhergehenden Wert (verbunden mit ,), sucht ihn in der Map-Tabelle und gibt das Ergebnis zurück.

Wenn keine Übereinstimmung gefunden wird, wird kein Ergebnis zurückgegeben. Der -m foundTest gibt also kein Ergebnis zurück und die Regel stimmt nicht überein. ( -imacht die Suche unabhängig von Groß- und Kleinschreibung.)

Wenn die Regel zutrifft, erstellen wir eine neue URL für den LocationAntwortheader, indem wir die Literalzeichenfolge https://(ändern Sie diese httpbei Bedarf in ) + den umgeschriebenen Hostnamen aus der Map-Datei + die ursprüngliche Anforderungs-URI verwenden, die mit dem führenden beginnt /und den Pfad und die Abfragezeichenfolge enthält, wobei die gesamte Anforderungs-URI erhalten bleibt.

Wenn Sie die ursprüngliche URI nicht beibehalten, sondern nur alles an die Hauptseite der Zielsite senden möchten, entfernen Sie es %[capture.req.uri]aus dem Ausdruck.

verwandte Informationen