HAProxy 是否支持一台服务器内多个子域名?

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 的特定服务器?

答案1

您需要为每个子域配置后端,或者如果大多数请求应到达特定服务器,则可能使用默认后端。如果您配置多个后端,则没有什么可以阻止它们指向同一 Web 服务器。

答案2

恐怕这不是您真正想要/需要的。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

可以有更多后端位于不同的服务器上...我只是遵循示例;-)

相关内容