Estoy usando haproxy para dirigir la ruta para varias aplicaciones que se ejecutan en un solo servidor. Para uno de los dominios en uso, hay varias docenas de subdominios que deben dirigirse a una de las pocas aplicaciones.
Actualmente, enumero todos esos subdominios en una línea separada. Mi configuración de interfaz se ve así:
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
¿Hay alguna manera de lograr un resultado similar en forma más concisa? ¿Es eficaz este listado, o sería mejor cambiar a una expresión regular en algún momento?
proxy
load-balancing
haproxy
Hubert OG
fuente
fuente
regex
, que de hecho es su respuesta, creo. También tenga en cuenta que puede usar enhdr_beg
lugar dehdr
para enumerar solo los subdominios. Finalmente, debería ser posible contraer susgamma00-06
ACL en solo dos ACL, una parasub1
y otra parasub2
, simplemente usando el mismoacl <title>
en la línea de ACL.Respuestas:
Para mantener el rendimiento al máximo (evitando una expresión regular cada golpe) pero aún limpiando la configuración, usaría un archivo externo para sus ACL aquí. Por ejemplo, digamos que tenía un archivo llamado
/etc/haproxy/sub1urls
, que era exactamente esto:Luego, en su configuración, la ACL podría ser simplemente:
Poner los otros hosts en un
sub2urls
archivo de la misma manera reduce su configuración a:Esto hace que sea muy fácil mantener esos otros archivos, ya que son solo listas de hosts. Abre la lista de quién puede editarlos y también expone menos riesgos. Por ejemplo, tenemos personas que editan estas listas de ACL como esta en títeres que no tienen que conocer la sintaxis de configuración de HAProxy.
fuente