En HAProxy, los ACLs que involucran el host se utilizan para verificar y comparar el valor del encabezado HTTP Host
. Los diferentes tipos de ACLs de host son muy útiles cuando se necesita enrutar el tráfico a diferentes backends basándose en el dominio o subdominio al que se está accediendo. Aquí te detallo los tipos más comunes de ACLs relacionadas con el host:
Tipos de ACL de host
en HAProxy:
hdr(host)
: Compara el valor del encabezadoHost
con una cadena específica. Se utiliza para verificar si la solicitud HTTP coincide con un dominio o subdominio específico.
Ejemplo:acl is_example_com hdr(host) -i example.com
use_backend example_backend if is_example_com
-i
: El modificador-i
indica que la comparación es insensible a mayúsculas/minúsculas.
hdr(host) -m reg
: Compara el valor del encabezadoHost
usando una expresión regular. Esto es útil si deseas hacer coincidencias más flexibles, como verificar múltiples subdominios o patrones.
Ejemplo:acl is_subdomain hdr(host) -m reg ^.*\.example\.com$
use_backend subdomain_backend if is_subdomain
-m reg
: El modificador-m reg
permite el uso de expresiones regulares en la comparación.
hdr_beg(host)
: Compara si el encabezadoHost
comienza con una cadena específica. Esto es útil si deseas hacer coincidir un dominio base o varios subdominios.
Ejemplo:acl is_example hdr_beg(host) -i example
use_backend example_backend if is_example
-i
: El modificador hace que la comparación sea insensible a mayúsculas/minúsculas.
hdr_end(host)
: Compara si el encabezadoHost
termina con una cadena específica. Esto es útil cuando se desea hacer coincidir todos los subdominios o dominios de un patrón específico.
Ejemplo:acl is_com_domain hdr_end(host) -i .com
use_backend com_backend if is_com_domain
hdr_cnt(host)
: Verifica la cantidad de veces que aparece un patrón específico en el encabezadoHost
. Esto puede ser útil para casos muy específicos de enrutamiento, aunque no es tan común.
Ejemplo:acl is_multiple_hosts hdr_cnt(host) 2
use_backend multiple_hosts_backend if is_multiple_hosts
hdr(host) -m str
: Compara el valor del encabezadoHost
con una cadena literal específica, permitiendo coincidencias exactas.
Ejemplo:acl is_api_host hdr(host) -m str api.example.com
use_backend api_backend if is_api_host
Resumen de los modificadores:
-i
: Insensible a mayúsculas/minúsculas.-m reg
: Permite el uso de expresiones regulares.-m str
: Compara cadenas exactas.-m beg
: Compara el inicio de la cadena.-m end
: Compara el final de la cadena.
Estos tipos de ACLs de host son esenciales para enrutar tráfico a diferentes backends basados en el dominio o subdominio al que se accede, lo que permite una configuración flexible y personalizada en HAProxy.