Używam haproxy do kierowania trasą dla kilku aplikacji działających na jednym serwerze. Dla jednej z używanych domen istnieje kilkadziesiąt subdomen, które powinny być skierowane do jednej z kilku aplikacji.
Obecnie wymieniam wszystkie te subdomeny w osobnej linii. Moja konfiguracja interfejsu wygląda następująco:
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
Czy istnieje sposób na uzyskanie podobnego wyniku w bardziej zwięzłej formie? Czy taka lista jest skuteczna, czy może lepiej w pewnym momencie przejść do wyrażenia regularnego?
proxy
load-balancing
haproxy
Hubert OG
źródło
źródło
regex
, które, jak sądzę, jest twoją odpowiedzią. Pamiętaj też, że możesz użyćhdr_beg
zamiasthdr
, aby wyliczyć tylko subdomeny. Wreszcie, powinno być możliwe zwinięciegamma00-06
list ACL do dwóch list ACL, jednej dlasub1
i jednej dlasub2
, po prostu przy użyciu tego samegoacl <title>
w linii ACL.Odpowiedzi:
Aby utrzymać maksymalną wydajność (unikając wyrażenia regularnego przy każdym trafieniu), ale nadal czyszcząc konfigurację, użyłbym tutaj zewnętrznego pliku dla twoich list ACL. Załóżmy na przykład, że masz plik o nazwie
/etc/haproxy/sub1urls
, który był dokładnie taki:Następnie w twojej konfiguracji ACL może po prostu być:
Umieszczenie innych hostów w
sub2urls
pliku w ten sam sposób ogranicza konfigurację do:Ułatwia to zarządzanie tymi innymi plikami, ponieważ są to tylko listy hostów. Otwiera listę osób, które mogą je edytować, a także zmniejsza ryzyko. Na przykład mamy osoby edytujące takie listy ACL w marionetce, które wcale nie muszą znać składni konfiguracji HAProxy.
źródło