要求如何與路由設定進行比對
Azure Front Door 的路由會定義當傳入要求抵達 Azure Front Door 邊緣時的流量處理方式。 透過路由設定,定義網域與原點群組間的關聯。 使用 [要比對的模式] 與 [規則集] 等進階功能,您可以更精細地控制後端資源的流量。
注意
使用 [Front Door 規則集] 時,您可以設定規則來針對要求覆寫原點群組。 規則集所設定的原點群組會覆寫本文中所述的路由流程。
重要
Azure Front Door(傳統版)將於 2027 年 3 月 31 日淘汰。 為了避免任何服務中斷,請務必在 2027 年 3 月之前將 Azure Front Door (傳統) 配置檔移轉至 Azure Front Door Standard 或 進階版 層。 如需詳細資訊,請參閱 Azure Front Door(傳統版)淘汰。
當要求抵達 Azure Front Door (傳統) 邊緣時,Front Door 首先會做的其中一件事是決定如何將比對要求路由傳送至後端資源,然後在路由設定中採取已定義的動作。 下列文件說明 Front Door 在處理要求時,如何判斷要使用的路由設定。
Front Door 路由設定的結構
Front Door 路由規則主要由兩個部分組成:「左邊」與「右邊」。 Front Door 會比對連入要求與左邊的路由,而右邊則定義處理要求的方式。
連入比對 (左邊)
下列屬性可判斷連入要求與路由規則 (或左邊) 是否相符:
- HTTP 通訊協定 - HTTP 或 HTTPS
- 網域 - 例如:www.foo.com、*.bar.com
- 路徑 - 例如:/*、/users/*、/file.gif
這些屬性是從內部展開,因此通訊協定/網域/路徑的每個組合都是可能的相符項目集合。
路由決策 (右邊)
如何處理要求的決策取決於是否要為路由啟用快取。 如果無法取得快取的回應,就會將要求轉送至適當的原點。
路由比對
本節著重於 Front Door 與路由規則的比對方式。 基本概念是 Front Door 只查看「左邊」,一律比對最明確的要求。 Front Door 會先根據通訊協定、接著網域,最後是路徑來進行比對。
前端主機比對
Azure Front Door 會使用下列邏輯來比對前端主機:
- 判斷前端主機上是否有完全相符的任何路由。
- 如果沒有完全相符的前端主機,要求就會遭到拒絕,並傳送「400:不正確的要求」錯誤。
下表顯示具有前端主機和路徑的三種不同路由規則:
路由規則 | 前端主機 | 路徑 |
---|---|---|
A | foo.contoso.com | /* |
B | foo.contoso.com | /users/* |
C | www.fabrikam.com、foo.adventure-works.com | /*、/images/* |
下表顯示上述路由規則的比對結果:
連入前端主機 | 相符的路由規則 |
---|---|
foo.contoso.com | A 和 B |
www.fabrikam.com | C |
images.fabrikam.com | 錯誤 400:不正確的要求 |
foo.adventure-works.com | C |
contoso.com | 錯誤 400:不正確的要求 |
www.adventure-works.com | 錯誤 400:不正確的要求 |
www.northwindtraders.com | 錯誤 400:不正確的要求 |
路徑比對
在 Front Door 判斷特定前端主機並篩選可能的路由規則之後,Front Door 接著會根據要求路徑來選取路由規則。 前端主機的類似邏輯可用來比對要求路徑:
- 判斷是否有任何路由規則與要求路徑完全相符。
- 如果沒有完全相符的路徑,Front Door 會尋找具有相符萬用字元路徑的路由規則。
- 如果找不到具有相符路徑的路由規則,則會拒絕要求,並傳送「400:不正確的要求」錯誤。
注意
萬用字元 *
僅適用於後面沒有任何其他字元的路徑。 此外,萬用字元 *
前面必須加上斜線 /
。 不含萬用字元的路徑都會被視為完全相符的路徑。 以斜線 /
結尾的路徑也是完全相符的路徑。 請確定您的路徑遵循這些規則,以避免任何錯誤。
注意
- 任何不含萬用字元的路徑都會被視為完全相符的路徑。 如果路徑以
/
結尾,則會視為完全相符。 - 比對路徑的模式不會區分大小寫,這表示具有不同大小寫的路徑會被視為重複項目。 例如,您有使用相同通訊協定的相同主機,路徑為
/FOO
和/foo
。 這些路徑會被視為重複,且不適用於 [要比對的模式] 設定。
下表是路由規則、前端主機和路徑組合的清單:
路由規則 | 前端主機 | 路徑 |
---|---|---|
A | www.contoso.com | / |
B | www.contoso.com | /* |
C | www.contoso.com | /ab |
D | www.contoso.com | /abc |
E | www.contoso.com | /abc/ |
F | www.contoso.com | /abc/* |
G | www.contoso.com | /abc/def |
H | www.contoso.com | /path/ |
下表顯示傳入要求在抵達 Front Door 邊緣時會比對的路由規則:
連入要求 | 相符的路由 |
---|---|
www.contoso.com/ | A |
www.contoso.com/a | B |
www.contoso.com/ab | C |
www.contoso.com/abc | D |
www.contoso.com/abzzz | B |
www.contoso.com/abc/ | E |
www.contoso.com/abc/d | F |
www.contoso.com/abc/def | G |
www.contoso.com/abc/defzzz | F |
www.contoso.com/abc/def/ghi | F |
www.contoso.com/path | B |
www.contoso.com/path/ | H |
www.contoso.com/path/zzz | B |
警告
如果使用全面涵蓋路由路徑 (/*
) 的完全相符前端主機找不到任何路由規則,則任何路由規則都不會有相符項目。
設定範例:
路由 | Host | 路徑 |
---|---|---|
A | profile.contoso.com | /api/* |
比對表格:
傳入要求 | 相符的路由 |
---|---|
profile.domain.com/other | 無。 錯誤 400:不正確的要求 |
路由決策
一旦 Front Door 符合單一路由規則,便需要選擇如何處理要求。 如果您的 Azure Front Door 有快取的回應可供相符的路由規則使用,則會以相同的回應傳回給用戶端。
最後,Azure Front Door 會評估您是否具有針對相符路由規則所設定的規則集。 如果未定義任何規則集,則要求會在沒有任何變更的情況下轉送至原點群組。 否則,規則集會依照設定的順序進行處理。 規則集可以覆寫路由,方法是強制將流量傳送至特定原點群組。
如果 Front Door (傳統) 沒有相符路由規則的快取回應,系統就會評估是否已針對相符路由規則設定 URL 重寫。 如果沒有自訂轉送路徑,系統就會在沒有任何變更的情況下將要求轉送到所設定後端集區中的適當後端。 如果已定義自訂轉送路徑,則會根據自訂轉送路徑中的定義來更新要求路徑,然後轉送至後端。
下一步
- 了解如何建立 Azure Front Door。
- 了解 Azure Front Door 路由架構。