ganz schnelle Frage zu HAProxy reqrep. Ich versuche, die Anfrage, die an das Backend gesendet wird, umzuschreiben / zu ersetzen.
Ich habe die folgenden Beispieldomänen und URIs, die denselben Domänennamen, aber unterschiedliche Back-End-Webserverpools verwenden.
http://domain/web1
http://domain/web2
Ich möchte, dass web1 zu webfarm1 und web2 zu webfarm2 wechselt. Derzeit passiert dies. Ich möchte jedoch die Web1- oder Web2-URI entfernen, wenn die Anforderung an das Back-End gesendet wird.
Hier ist meine haproxy.cfg
frontend webVIP_80
mode http
bind :80
#acl routing to backend
acl web1_path path_beg /web1
acl web2_path path_beg /web2
#which backend
use_backend webfarm1 if web1_path
use_backend webfarm2 if web2_path
default_backend webfarm1
backend webfarm1
mode http
reqrep ^([^\ ]*)\ /web1/(.*) \1\ /\2
balance roundrobin
option httpchk HEAD /index HTTP/1.1\r\nHost:\ example.com
server webtest1 10.0.0.10:80 weight 5 check slowstart 5000ms
server webtest2 10.0.0.20:80 weight 5 check slowstart 5000ms
backend webfarm2
mode http
reqrep ^([^\ ]*)\ /web2/(.*) \1\ /\2
balance roundrobin
option httpchk HEAD /index HTTP/1.1\r\nHost:\ example.com
server webtest1-farm2 10.0.0.110:80 weight 5 check slowstart 5000ms
server webtest2-farm2 10.0.0.120:80 weight 5 check slowstart 5000ms
Wenn ich gehe http://domain/web1
oder http://domain/web2
es in den Fehlerprotokollen sehe, dass die Anforderung auf einem Server in jedem Backend, dass die Anforderung für die Ressource / web1 bzw. / web2 ist. Daher glaube ich, dass mit meinem regulären Ausdruck etwas nicht stimmt, obwohl ich ihn aus der Dokumentation kopiert und eingefügt habe. http://code.google.com/p/haproxy-docs/wiki/reqrep
Zusammenfassung: Ich versuche, Datenverkehr basierend auf der URI weiterzuleiten. HAProxy soll jedoch die URI entfernen, wenn die Anforderung an den Back-End-Pool gesendet wird.
Vielen Dank!
-Jim