O HAProxy oferece suporte a vários subdomínios em um servidor?

O HAProxy oferece suporte a vários subdomínios em um servidor?

Atualmente tenho uma estrutura com um servidor Apache 2 com vários subdomínios. Conforme o exemplo abaixo:

<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>

Estou pensando em duplicar este servidor e apenas criar um novo com HAProxy para realizar balanceamento de carga.

O suporte do HAProxy aponta todas as solicitações para o servidor filho com o mesmo IP ou para cada subdomínio precisarei de um servidor específico com um IP específico?

Responder1

Você precisará configurar back-ends para cada subdomínio ou possivelmente usar um back-end padrão se a maioria das solicitações chegar a um servidor específico. Se você configurar vários back-ends, nada os impedirá de apontar para o mesmo servidor web.

Responder2

Receio que isso não seja realmente o que você deseja/precisa. HAproxy é uma ótima ferramenta para atuar como proxy*, mas o caso de uso que você está fornecendo como exemplo não está relacionado ao proxy, mas ao servidor http regular*. Caso você queira substituir o apache a opção poderia ser, por exemplo, nginx.


procurador- aplicação que faz a verificação da solicitação e/ou faz subsolicitações para fornecer o conteúdo

servidor HTTP- aplicativo que fornece o conteúdo


É possível usar HAproxy como frontend e nginx como backend mesmo no mesmo nó. A configuração do HAproxy seria algo assim (sem https conforme solicitado):

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

Pode haver mais back-ends terminando em servidores diferentes... Acabei de seguir o exemplo ;-).

informação relacionada