Ich habe folgendes Setup:
|-------|--- backend1:8080
example.com:80---|HAProxy|--- backend2:8080
|-------|--- backend3:8080
Ich möchte den HAProxy so konfigurieren, dass ein benutzerdefinierter Header hinzugefügt wird, der die ursprüngliche URL enthält. Zum Beispiel, wenn der Benutzer dies wünscht http://example.com/foo?bar=baz, dh:
GET /foo?bar=baz HTTP/1.1
Host: example.com:80
Ich möchte, dass der HAProxy diese Anfrage wie folgt in das Backend übersetzt:
GET /foo?bar=baz HTTP/1.1
Host: backend1:8080
x-custom-header: http://example.com/foo?bar=baz
Mit dieser reqaddOption kann ich nur einen Header mit einem statischen Wert hinzufügen. Ich konnte den Pfadabschnitt aus der Anforderung abrufen, indem ich reqrep:
reqrep ^([^\ ]*)\ ([^\ ]*)\ (HTTP\/1\.[10]) \0\r\nx-custom-header:\ \2
Leider erfasst dies nur den Pfadabschnitt der ursprünglichen URL, was zu folgendem Header führt:
x-custom-header: /foo?bar=baz
Meine Frage ist also, ob es in HAProxy 1.4 möglich ist , sowohl den HostHeader als auch die erste Zeile der HTTP-Anforderung in einem benutzerdefinierten Header zu kombinieren
reqaddmit einer ACL zu kombinieren , die auf diebe_id(Backend-ID) verweist ? Es ist nicht gerade dynamisch, aber es kann Sie näher bringen, wenn die Anzahl der Backends gering ist ...reqirepunterstützt auch eine optionale ACL, sodass Sie möglicherweise separate Regexes für jedes Back-End schreiben können, die jeweils nur aktiv sind, wenn eine ACL mit dem ausgewählten Backend übereinstimmt. Ich würde.