Estou usando o haproxy para direcionar a rota para vários aplicativos em execução em um único servidor. Para um dos domínios em uso, existem várias dezenas de subdomínios que devem ser direcionados para um dos poucos aplicativos.
Atualmente, listo todos esses subdomínios em uma linha de separação. Minha configuração de front-end é assim:
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 uma maneira de obter um resultado semelhante de forma mais concisa? Essa listagem é eficaz ou seria melhor mudar para uma regex em algum momento?
proxy
load-balancing
haproxy
Hubert OG
fonte
fonte
regex
, que é de fato sua resposta, acredito. Observe também que você pode usar emhdr_beg
vez de,hdr
para enumerar apenas os subdomínios. Por fim, deve ser possível recolher suasgamma00-06
ACLs para apenas duas ACLs, uma parasub1
e outrasub2
, simplesmente usando o mesmoacl <title>
na linha da ACL.Respostas:
Para manter o desempenho no máximo (evitando uma regex a cada ocorrência), mas ainda limpando a configuração, eu usaria um arquivo externo para suas ACLs aqui. Por exemplo, digamos que você tinha um arquivo chamado
/etc/haproxy/sub1urls
, que era exatamente isso:Então, na sua configuração, a ACL poderia ser simplesmente:
Colocar os outros hosts em um
sub2urls
arquivo da mesma maneira reduz sua configuração para:Isso facilita muito a manutenção desses outros arquivos, pois eles são apenas listas de hosts. Ele abre a lista de quem pode editá-los e expõe menos riscos também. Por exemplo, temos pessoas editando essas listas de ACL como estas em fantoches que não precisam conhecer a sintaxe de configuração do HAProxy.
fonte