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

可以有更多的後端在不同的伺服器上結束......我只是按照這個例子;-)。

相關內容