應用程式閘道多站台裝載
多站台裝載可讓您使用對外公開接聽程式,在相同的應用程式閘道連接埠上設定多個 Web 應用程式。 此功能可讓您將 100 多個網站新增到一個應用程式閘道,為您的部署設定更有效率的拓撲。 每個網站都可以導向到自己的後端集區。 例如,contoso.com、fabrikam.com 和 adatum.com 三個網域都指向應用程式閘道的 IP 位址。 您會建立三個多網站接聽程式,並針對個別的連接埠和通訊協定設定來設定每個接聽程式。
您也可以在多網站接聽程式中定義萬用字元主機名稱,並為每個接聽程式定義最多 5 個主機名稱。 若要深入瞭解,請參閱接聽程式中的萬用字元主機名稱。
重要
v1 SKU 會依入口網站所列的順序處理規則。 針對 v2 SKU,請使用規則優先順序來指定處理順序。 強烈建議纖設定多站台接聽程式,再設定基本接聽程式。 這可確保流量路由傳送到右邊後端。 如果先列出了基本接聽程式,且該接聽程式符合傳入的要求,就會由該接聽程式處理。
對 http://contoso.com
的要求會路由傳送至 ContosoServerPool,而對 http://fabrikam.com
的要求則會路由傳送至 FabrikamServerPool。
同樣地,您可以在相同的應用程式閘道部署上裝載相同父系網域的多個子網域。 例如,您可以在單一應用程式閘道部署上裝載 http://blog.contoso.com
和 http://app.contoso.com
。
要求路由規則評估順序
使用多站台接聽程式時,若要確保將用戶端流量路由傳送至正確的後端,請務必以正確的順序顯示要求路由規則。
例如,如果您有 2 個接聽程式,其相關聯的主機名稱分別為 *.contoso.com
和 shop.contoso.com
,則必須先處理主機名稱為 shop.contoso.com
的接聽程式,再處理具有 *.contoso.com
的接聽程式。 如果先處理具有 *.contoso.com
的接聽程式,則較特定的 shop.contoso.com
接聽程式不會接收任何用戶端流量。
您可以將「優先順序」欄位值提供給與接聽程式相關聯的要求路由規則,來建立規則順序。 您可以指定從 1 到 20000 的整數值,其中 1 表示最高優先順序,而 20000 表示最低優先順序。 如果傳入用戶端流量與多個接聽程式相符,則會使用優先順序最高的要求路由規則來服務要求。 每個要求路由規則必須有唯一的優先順序值。
優先順序欄位只會影響要求路由規則的評估順序,這不會變更 PathBasedRouting
要求路由規則內路徑型規則的評估順序。
注意
若要使用規則優先順序,則必須為所有現有的要求路由規則指定規則優先順序欄位值。 一旦規則優先順序欄位在使用中,任何建立的新路由規則都必須有規則優先順序欄位值做為其設定的一部分。
重要
從 API 2021-08-01 版開始,規則優先順序欄位成為要求路由規則的必要欄位。 如果使用 API 2021-08-01 版和更新版本、入口網站、Azure PowerShell 和 Azure CLI 套用任何設定更新,則會根據作為第一個 PUT 呼叫一部分的目前評估順序自動填入現有要求路由規則的規則優先順序欄位值。 要求路由規則的任何未來更新都必須在設定中提供規則優先順序欄位。
接聽程式中的萬用字元主機名稱
應用程式閘道允許使用多站台 HTTP(S) 接聽程式進行主機型路由。 現在,您可以在主機名稱中使用星號 (*) 和問號 (?) 等萬用字元,以及每個多站台 HTTP(S) 接聽程式最多 5 個主機名稱。 例如: *.contoso.com
。
在主機名稱中使用萬用字元,您可以在單一接聽程式中比對多個主機名稱。 例如,*.contoso.com
可以比對 ecom.contoso.com
、b2b.contoso.com
和 customer1.b2b.contoso.com
等等。 使用主機名稱陣列,您可以為接聽程式設定多個主機名稱,以將要求路由傳送至後端集區。 例如,接聽程式可以包含 contoso.com, fabrikam.com
,其將接受這兩個主機名稱的要求。
注意
此功能僅適用於應用程式閘道的 Standard_v2 和 WAF_v2 SKU。
在 Azure PowerShell 中,您必須使用 -HostNames
,而不是 -HostName
。 在 HostNames 中,您可以用逗號分隔值舉出最多 5 個主機名稱並使用萬用字元。 例如: -HostNames "*.contoso.com","*.fabrikam.com"
。
在 Azure CLI 中,您必須使用 --host-names
,而不是 --host-name
。 在 host-names 中,您可以用逗號分隔值舉出最多 5 個主機名稱並使用萬用字元。 例如: --host-names "*.contoso.com,*.fabrikam.com"
。
在 Azure 入口網站的多站台接聽程式下,您必須選擇 [多重/萬用字元] 主機類型,以提及最多五個具有允許萬用字元的主機名稱。
主機名稱欄位中允許的字元
(A-Z,a-z,0-9)
- 英數字元-
- 連字號或減號.
- 句號作為分隔符號*
- 可以與允許範圍中的多個字元相符?
- 可以與允許範圍中的單一字元相符
在接聽程式中使用萬用字元和多個主機名稱的條件
- 您只能在單一接聽程式中提及最多 5 個主機名稱
- 星號
*
只能在網域樣式名稱或主機名稱的元件中提及一次。 例如,component1*.component2*.component3。(*.contoso-*.com)
有效。 - 主機名稱中最多只能有兩個星號
*
。 例如,*.contoso.*
為有效,而*.contoso.*.*.com
為無效。 - 主機名稱中最多只能有 4 個萬用字元。 例如,
????.contoso.com
、w??.contoso*.edu.*
為有效,而????.contoso.*
為無效。 - 在主機名稱元件中同時使用星號
*
和問號?
(*?
或?*
或**
) 為無效。 例如,*?.contoso.com
和**.contoso.com
為無效。
在接聽程式中使用萬用字元或多個主機名稱的考量和限制
- SSL 終止和端對端 SSL 需要您將通訊協定設定為 HTTPS,並上傳要在接聽程式設定中使用的憑證。 如果是多站台接聽程式,您也可以輸入主機名稱,這通常是 SSL 憑證的 CN。 當您在接聽程式中指定多個主機名稱或使用萬用字元時,您必須考慮下列事項:
- 如果是 *.contoso.com 之類的萬用字元主機名稱,您必須上傳具有 CN 的萬用字元憑證,例如 *.contoso.com
- 如果在相同的接聽程式中提及多個主機名稱,您必須上傳 SAN 憑證 (主體別名) 與所提及主機名稱相符的 CN。
- 您無法使用規則運算式來提及主機名稱。 您只能使用星號 (*) 和問號 (?) 等萬用字元來構成主機名稱模式。
- 針對後端健康情況檢查,您無法為每個 HTTP 設定建立多個自訂探查的關聯。 相反地,您可以探查後端的其中一個網站,或使用「127.0.0.1」來探查後端伺服器的 localhost。 不過,當您在接聽程式中使用萬用字元或多個主機名稱時,系統都會根據規則類型 (基本或路徑型),將所有指定網域模式的要求路由傳送至後端集區。
- 「hostname」屬性會採用一個字串作為輸入,其中您只能提及一個非萬用字元網域名稱。 「hostname」屬性會採用一個字串陣列作為輸入,其中您能夠提及最多 5 個萬用字元網域名稱。 您不能同時使用這兩個屬性。
如需如何在多站台接聽程式中設定萬用字元主機名稱的逐步指南,請參閱使用 Azure PowerShell 建立多站台或使用 Azure CLI。
TLS 和 TCP 通訊協定接聽程式的多網站接聽程式
多網站功能也適用於 Layer4 Proxy,但僅適用於其 TLS 接聽程式。 您可以透過在 TLS 接聽程式中提供網域名稱,將每個應用程式的流量導向至自己的後端集區。 為了在 TLS 接聽程式上啟用多網站功能,應用程式閘道會使用伺服器名稱指示 (SNI) 值 (用戶端主要透過 SNI 延伸模組來擷取正確的 TLS 憑證)。 支援多網站的 TLS 接聽程式會從連入連線的 TLS 交握資料中擷取 SNI 值,然後將該連線路由傳送到適當的後端集區。 TCP 連線本身沒有主機名稱或網域名稱的概念,因此 TCP 接聽程式無法使用此功能。
主機標頭和伺服器名稱指示 (SNI)
有三個常見的機制可允許在相同的基礎結構上進行多站台裝載。
- 將多個 Web 應用程式分別裝載在一個唯一的 IP 位址上。
- 使用主機名稱將多個 Web 應用程式裝載在相同的 IP 位址上。
- 使用不同的連接埠將多個 Web 應用程式裝載在相同的 IP 位址上。
目前應用程式閘道支援單一公用 IP 位址,也就是其接聽流量的所在。 目前不支援讓多個應用程式分別擁有自己的 IP 位址。
「應用程式閘道」支援多個分別在不同連接埠上進行接聽的應用程式,但此情節會需要應用程式在非標準連接埠上接受流量。
「應用程式閘道」需依賴 HTTP 1.1 主機標頭,才能在相同的公用 IP 位址和連接埠上裝載多個網站。 裝載在應用程式閘道上的網站也可以使用「伺服器名稱指示」(SNI) TLS 延伸模組來支援 TLS 卸載。 此案例表示用戶端瀏覽器和後端 Web 伺服陣列必須支援 RFC 6066 中所定義的 HTTP/1.1 和 TLS 擴充功能。
下一步
了解如何在應用程式閘道中設定多站台裝載
請參閱使用多站台裝載的 Resource Manager 範本,以了解以範本為基礎的端對端部署。