Назад | Перейти на главную страницу

Поддерживает ли 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-адресом?

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

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


доверенное лицо - приложение, которое выполняет проверку запроса и / или выполняет подзапросы для предоставления контента

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

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