Ich verwende Haproxy, um die Route für mehrere Anwendungen zu steuern, die auf einem einzelnen Server ausgeführt werden. Für eine der verwendeten Domänen gibt es mehrere Dutzend Subdomänen, die an eine der wenigen Anwendungen gerichtet werden sollten.
Derzeit liste ich alle diese Subdomains in einer separaten Zeile auf. Meine Frontend-Konfiguration sieht folgendermaßen aus:
frontend http-in
bind *:80
acl alpha hdr(host) -i alpha.com
acl beta hdr(host) -i beta.com
acl gamma00 hdr(host) -i apple.gamma.com
acl gamma01 hdr(host) -i banana.gamma.com
acl gamma02 hdr(host) -i cherry.gamma.com
acl gamma03 hdr(host) -i durian.gamma.com
acl gamma04 hdr(host) -i elderberry.gamma.com
acl gamma05 hdr(host) -i fig.gamma.com
acl gamma06 hdr(host) -i grapefruit.gamma.com
acl gamma hdr(host) -i gamma.com
use_backend a if alpha
use_backend b if beta
use_backend sub1 if gamma00
use_backend sub1 if gamma01
use_backend sub1 if gamma02
use_backend sub2 if gamma03
use_backend sub2 if gamma04
use_backend sub2 if gamma05
use_backend sub2 if gamma06
use_backend g if gamma
default_backend default
Gibt es eine Möglichkeit, ein ähnliches Ergebnis in präziserer Form zu erzielen? Ist eine solche Auflistung effektiv oder wäre es besser, irgendwann zu einem regulären Ausdruck zu wechseln?
proxy
load-balancing
haproxy
Hubert OG
quelle
quelle
regex
, das tatsächlich deine Antwort ist, glaube ich. Beachten Sie auch, dass Siehdr_beg
stattdessen verwenden können, umhdr
nur die Subdomains aufzulisten. Schließlich sollte es möglich sein, Ihregamma00-06
ACLs auf nur zwei ACLs zu reduzieren, eine fürsub1
und eine fürsub2
, indem Sie diese einfachacl <title>
in der ACL-Zeile verwenden.Antworten:
Um die Leistung auf einem Maximum zu halten (wobei bei jedem Treffer ein regulärer Ausdruck vermieden wird) und dennoch die Konfiguration bereinigt wird, würde ich hier eine externe Datei für Ihre ACLs verwenden. Nehmen wir zum Beispiel an, Sie hatten eine Datei mit dem Namen
/etc/haproxy/sub1urls
: Genau das war:Dann könnte die ACL in Ihrer Konfiguration einfach sein:
Wenn Sie die anderen Hosts auf
sub2urls
die gleiche Weise in eine Datei einfügen, reduziert sich Ihre Konfiguration auf:Dies macht es sehr einfach, diese anderen Dateien zu verwalten, da es sich nur um Listen von Hosts handelt. Es öffnet die Liste, wer sie bearbeiten kann, und birgt auch weniger Risiken. Zum Beispiel haben wir Leute, die diese ACL-Listen wie diese in Puppet bearbeiten und die die HAProxy-Konfigurationssyntax überhaupt nicht kennen müssen.
quelle