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é?
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.