Tipos de ACLs de Host en HAProxy: Enrutamiento Avanzado por Dominio y Subdominio

Artículos Guías Manuales Sistemas Linux Windows Binario 0

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:

  1. hdr(host): Compara el valor del encabezado Host 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.
  2. hdr(host) -m reg: Compara el valor del encabezado Host 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.
  3. hdr_beg(host): Compara si el encabezado Host 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.
  4. hdr_end(host): Compara si el encabezado Host 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
  5. hdr_cnt(host): Verifica la cantidad de veces que aparece un patrón específico en el encabezado Host. 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
  6. hdr(host) -m str: Compara el valor del encabezado Host 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.