Ich denke , dass hdr_sub besser für Ihre Bedürfnisse ist. Ich habe hdr_end für eine Weile verwendet, aber es tritt das folgende Problem auf:
Bei Anforderungen mit Port 80 wird der Port normalerweise entfernt, sodass der Host-Header wie "example.com" aussieht. Wenn Sie jedoch explizit an einem Port wie example.com:8080 anfordern, hat der Header den Port und hdr_end schlägt fehl Suchen Sie nach "example.com".
hdr_sub führt ein Teilstring-Match durch, das für Sie (und mich) besser zu passen scheint.
Jede Lösung hat immer noch eine böse Sache, die ich nicht mag. Auftragsabhängige Auswertung der Ergebnisse.
zB (meine Bedingungen sehen im Frontend so aus)
acl is_dbadmin hdr_sub(host) -i dbadmin.example.com
Das Anfordern an Port 8080 würde folgendermaßen aussehen:
Jul 9 02:48:40 localhost haproxy[8]: 192.168.1.1:55870 [09/Jul/2015:02:48:40.865] http-in example/s1 1/0/0/20/110 200 330722 - - ---- 0/0/0/0/0 0/0 {**example.com:8080**||http://example.com:} {Apache/2.4.10 (Debia||||} "GET /wp-includes/js/zxcvbn.min.js HTTP/1.1"
wo als Port 80 wahrscheinlich so sein könnte
Jul 9 02:48:40 localhost haproxy[8]: 192.168.1.1:55870 [09/Jul/2015:02:48:40.865] http-in example/s1 1/0/0/20/110 200 330722 - - ---- 0/0/0/0/0 0/0 {example.com||***http://example.com***:} {Apache/2.4.10 (Debia||||} "GET /wp-includes/js/zxcvbn.min.js HTTP/1.1"
acl valid_domains hdr(host) -i mysite.com
+acl valid_domains hdr_end(host) -i .mysite.com
oder einfach verwendenacl valid_domains hdr_dom(host) -i mysite.com
Es gibt Fälle, in denen Sie dies explizit angeben müssen, z. B. die Behandlung von Weiterleitungen für Platzhalter-SSL mit mehreren Ebenen von Subdomänen.
Das Anpassen von Ende (
hdr_end
oder-m end
) oder Teilzeichenfolge (hdr_sub
oder-m sub
) kann unbeabsichtigte Nebenwirkungen haben, wenn mehr als erwartet abgeglichen wird. In vielen Fällen spielt dies möglicherweise keine Rolle, da Sie keinen Datenverkehr für die zum Server kommenden Domänen haben, dies bedeutet jedoch nicht, dass dies die technisch korrekte Lösung ist.Die Verwendung eines regulären Ausdrucks ist der beste Weg, um einen expliziten Abgleich durchzuführen. Zum Beispiel, wenn Sie nur
*.example.org
ohne Übereinstimmung übereinstimmen möchtensub.domain.example.org
:Wenn Sie auch (beliebige) nicht standardmäßige Ports verarbeiten möchten, kann dies geringfügig erweitert werden:
Die obigen Angaben stimmen überein :
test1.example.org
test2.example.org:8080
und wird nicht übereinstimmen :
example.org
two.subs.example.org
myexample.org
test.myexample.org
test.example.org.other.com
quelle