¿HAProxy admite múltiples subdominios dentro de un servidor?

¿HAProxy admite múltiples subdominios dentro de un servidor?

Actualmente tengo una estructura con un servidor Apache 2 con múltiples subdominios. Como el siguiente ejemplo:

<VirtualHost *:80>
 ServerName www.example.com
 ServerAlias example.com
 DocumentRoot /var/www/main
</VirtualHost>

<VirtualHost *:80>
 ServerName subdomain-1.example.com
 ServerAlias subdomain-1.example.com
 DocumentRoot /var/www/sbd1
</VirtualHost>

<VirtualHost *:80>
 ServerName subdomain-2.example.com
 ServerAlias subdomain-2.example.com
 DocumentRoot /var/www/sbd2
</VirtualHost>

Estoy considerando duplicar este servidor y simplemente crear uno nuevo con HAProxy para realizar el equilibrio de carga.

¿El soporte de HAProxy dirige todas las solicitudes al servidor secundario con la misma IP o para cada subdominio necesitaré un servidor específico con una IP específica?

Respuesta1

Deberá configurar servidores para cada subdominio, o posiblemente usar un servidor predeterminado si la mayoría de las solicitudes deben llegar a un servidor específico. Si configura varios backends, no hay nada que les impida apuntar al mismo servidor web.

Respuesta2

Me temo que esto no es realmente lo que quieres o necesitas. HAproxy es una gran herramienta para actuar como proxy* pero el caso de uso que proporciona como ejemplo no está relacionado con el proxy sino con el servidor http normal*. En caso de que desee reemplazar Apache, la opción podría ser, por ejemplo, nginx.


apoderado- aplicación que verifica la solicitud y/o realiza subsolicitudes para proporcionar el contenido

servidor http- aplicación que proporciona el contenido


Es posible utilizar HAproxy como frontend y nginx como backend incluso en el mismo nodo. La configuración de HAproxy sería algo como esto (sin https como se solicita):

frontend http_front
    maxconn 1000
    mode http
    option http-server-close
    option forwardfor
    bind *:80

    acl top_domain hdr(host) -m str www.example.com
    acl top_domain hdr(host) -m str example.com

    acl subdom1 hdr(host) -m str www.subdomain-1.example.com
    acl subdom1 hdr(host) -m str subdomain-1.example.com

    acl subdom2 hdr(host) -m str www.subdomain-2.example.com
    acl subdom2 hdr(host) -m str subdomain-2.example.com


    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto http if !{ ssl_fc }

    use_backend local if subdom1
#   ...
    default_backend local

backend local
    fullconn 1000
    mode http
    timeout http-keep-alive 3000
    server local1 127.0.0.1:8080 check maxconn 100

Puede haber más backends que terminen en diferentes servidores... Solo he seguido el ejemplo ;-).

información relacionada