J'utilise haproxy pour diriger l'itinéraire pour plusieurs applications s'exécutant sur un seul serveur. Pour l'un des domaines utilisés, plusieurs dizaines de sous-domaines doivent être dirigés vers l'une des quelques applications.
Actuellement, je liste tous ces sous-domaines sur une ligne séparée. Ma configuration frontend ressemble à ceci:
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
Existe-t-il un moyen d'obtenir un résultat similaire sous une forme plus concise? Une telle liste est-elle efficace, ou serait-il préférable de passer à une expression régulière à un moment donné?
proxy
load-balancing
haproxy
Hubert OG
la source
la source
regex
, qui est en fait votre réponse, je crois. Notez également que vous pouvez utiliserhdr_beg
au lieu dehdr
afin d'énumérer uniquement les sous-domaines. Enfin, il devrait être possible de réduire vosgamma00-06
listes de contrôle d'accès en deux listes de contrôle d'accès, une poursub1
et une poursub2
, simplement en utilisant les mêmesacl <title>
dans la ligne ACL.Réponses:
Pour garder les performances au maximum (en évitant une expression régulière à chaque hit) mais en nettoyant la configuration, j'utiliserais ici un fichier externe pour vos ACL. Par exemple, supposons que vous ayez appelé un fichier
/etc/haproxy/sub1urls
, qui était exactement le suivant:Dans votre configuration, l'ACL pourrait simplement être:
Mettre les autres hôtes dans un
sub2urls
fichier de la même manière réduit votre configuration à:Cela facilite la maintenance de ces autres fichiers, car ce ne sont que des listes d'hôtes. Il ouvre la liste des personnes qui peuvent les modifier et expose également moins de risques. Par exemple, nous avons des gens qui éditent ces listes ACL comme ça dans une marionnette qui n'ont pas du tout besoin de connaître la syntaxe de configuration HAProxy.
la source