Поддерживает ли HAProxy несколько поддоменов на одном сервере?

В настоящее время у меня есть структура с сервером Apache 2 с несколькими поддоменами. В качестве примера ниже:

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

Я рассматриваю возможность дублировать этот сервер и просто создать новый с HAProxy для балансировки нагрузки.

Направляет ли поддержка HAProxy все запросы на дочерний сервер с тем же IP-адресом или для каждого поддомена я буду нужен конкретный сервер с определенным IP-адресом?

0
задан 16 January 2020 в 03:04
2 ответа

Вам нужно будет настроить бэкэнды для каждого поддомена, или, возможно, использовать бэкэнд по умолчанию, если большинство запросов должно доходить до конкретного сервера. Если вы настроите несколько бэкендов, ничто не помешает им направить запросы на один и тот же веб-сервер.

1
ответ дан 21 January 2020 в 01:20

Боюсь, это не совсем то, что вам нужно. HAproxy - отличный инструмент для работы в качестве прокси*, но пример использования, который вы приводите, не связан с прокси, а с обычным http-сервером*. В случае, если вы хотите заменить apache, опцией может быть, например, nginx.


proxy - приложение, которое проверяет запрос и / или делает subrequests для предоставления контента

http сервера - приложение, предоставляющее контент


Можно использовать HAproxy в качестве фронтенда и nginx в качестве бэкенда даже на одном и том же узле. Конфигурация HAproxy будет выглядеть следующим образом (без https по запросу):

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

На разных серверах может быть больше бэкендов, заканчивающихся на разных... Я просто следую примеру ;-).

.
0
ответ дан 21 January 2020 в 01:20

Теги

Похожие вопросы