教學課程:使用 Azure CLI 新增和自訂 Azure Front Door 標準/進階版 (預覽) 的傳遞規則
Azure Front Door 標準/進階版 (預覽) 是快速、安全的新式 CDN。 Azure Front Door 使用 Microsoft 全球邊緣網路,並整合智慧型威脅防護。 Azure Front Door 標準版著重於內容傳遞。 Azure Front Door 進階版則加上廣泛的安全性功能和自訂功能。 本教學課程著重於建立 Azure Front Door 設定檔,並新增傳遞規則,以便增加 Web 應用程式行為控制的精細度。
注意
本文件適用於 Azure Front Door Standard/Premium (預覽)。 希望了解 Azure Front Door 相關資訊嗎? 檢視 Azure Front Door 文件。
在本教學課程中,您將了解如何:
- 建立 Azure Front Door 設定檔。
- 建立 Web 應用程式的兩個執行個體。
- 建立新的安全性原則。
- 確認 Web 應用程式的連線能力。
- 建立規則集。
- 建立規則並新增至規則集。
- 將動作或條件新增至您的規則。
如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶。
必要條件
在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱 Azure Cloud Shell 中的 Bash 快速入門。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱〈如何在 Docker 容器中執行 Azure CLI〉。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱使用 Azure CLI 登入。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能詳細資訊,請參閱使用 Azure CLI 擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
建立 Azure Front Door
建立資源群組
在本快速入門中,您需要兩個資源群組。 其中一個在美國中部,第二個則在美國東部。
執行 az group create 以建立資源群組。
az group create \
--name myRGFDCentral \
--location centralus
az group create \
--name myRGFDEast \
--location eastus
建立 Azure Front Door 設定檔
執行 az afd profile create 以建立 Azure Front Door 設定檔。
az afd profile create \
--profile-name contosoafd \
--resource-group myRGFDCentral \
--sku Premium_AzureFrontDoor \
--subscription mysubscription
建立 Web 應用程式的兩個執行個體
本快速入門需要兩個 Web 應用程式執行個體,分別在不同的 Azure 區域中執行。 這兩個 Web 應用程式執行個體都會以「主動/主動」模式執行,因此其中任一個都可以服務流量。
如果您還沒有 Web 應用程式,請使用下列指令碼來設定兩個 Web 應用程式範例。
建立 App Service 方案
建立 Web 應用程式前,您需要兩個應用程式方案,一個在美國中部,另一個在美國東部。
使用 az appservice plan create 建立應用程式方案。
az appservice plan create \
--name myAppServicePlanCentralUS \
--resource-group myRGFDCentral
az appservice plan create \
--name myAppServicePlanEastUS \
--resource-group myRGFDEast
建立 Web 應用程式
執行 az webapp create,在上一步的各 App Service 方案中建立 Web 應用程式。 Web 應用程式名稱必須是全域唯一的。
執行 az webapp list-runtimes 以查看 Web 應用程式的內建堆疊清單。
az webapp create \
--name WebAppContoso-001 \
--resource-group myRGFDCentral \
--plan myAppServicePlanCentralUS \
--runtime "DOTNETCORE|2.1"
az webapp create \
--name WebAppContoso-002 \
--resource-group myRGFDEast \
--plan myAppServicePlanEastUS \
--runtime "DOTNETCORE|2.1"
記下每個 Web 應用程式的預設主機名稱,讓您可以在下一個步驟中部署 Front Door 時定義後端位址。
新增端點
執行 az afd endpoint create 在設定檔中建立端點。 完成建立體驗後,即可在設定檔中建立多個端點。
az afd endpoint create \
--resource-group myRGFDCentral \
--endpoint-name contoso-frontend \
--profile-name contosoafd \
--origin-response-timeout-seconds 60 \
--enabled-state Enabled
新增來源群組
執行 az afd origin-group create,以建立包含兩個 Web 應用程式的來源群組。
az afd origin-group create \
--resource-group myRGFDCentral \
--origin-group-name og1 \
--profile-name contosoafd \
--probe-request-type GET \
--probe-protocol Http \
--probe-interval-in-seconds 120 \
--probe-path /test1/azure.txt \
--sample-size 4 \
--successful-samples-required 3 \
--additional-latency-in-milliseconds 50
將來源新增至群組
執行 az afd origin create,將來源新增至原始來源群組。
az afd origin create \
--resource-group myRGFDCentral \
--host-name webappcontoso-1.azurewebsites.net
--profile-name contosoafd \
--origin-group-name og1 \
--origin-name contoso1 \
--origin-host-header webappcontoso-1.azurewebsites.net \
--priority 1 \
--weight 1000 \
--enabled-state Enabled \
--http-port 80 \
--https-port 443
重複此步驟,並新增第二個來源。
az afd origin create \
--resource-group myRGFDCentral \
--host-name webappcontoso-2.azurewebsites.net
--profile-name contosoafd \
--origin-group-name og1 \
--origin-name contoso2 \
--origin-host-header webappcontoso-2.azurewebsites.net \
--priority 1 \
--weight 1000 \
--enabled-state Enabled \
--http-port 80 \
--https-port 443
新增路由
執行 az afd route create,將您的前端端點對應至原始群組。 此路由會將要求從端點轉送至 og1。
az afd route create \
--resource-group myRGFDCentral \
--endpoint-name contoso-frontend \
--profile-name contosoafd \
--route-name route1 \
--https-redirect Enabled \
--origin-group og1 \
--supported-protocols Https \
--link-to-default-domain Enabled \
--forwarding-protocol MatchRequest
建立新的安全性原則
建立 WAF 原則
執行 az network front-door waf-policy create,建立其中一個資源群組的 WAF 原則。
為 Front Door 建立新的 WAF 原則。 此範例會建立預防模式的已啟用原則。
az network front-door waf-policy create
--name contosoWAF /
--resource-group myRGFDCentral /
--sku Premium_AzureFrontDoor
--disabled false /
--mode Prevention
注意
若選取 Detection
模式,WAF 不會封鎖任何要求。
建立安全性原則
執行 az afd security-policy create,將您的 WAF 原則套用至端點的預設網域。
az afd security-policy create \
--resource-group myRGFDCentral \
--profile-name contosoafd \
--security-policy-name contososecurity \
--domains /subscriptions/mysubscription/resourcegroups/myRGFDCentral/providers/Microsoft.Cdn/profiles/contosoafd/afdEndpoints/contoso-frontend.z01.azurefd.net \
--waf-policy /subscriptions/mysubscription/resourcegroups/myRGFDCentral/providers/Microsoft.Network/frontdoorwebapplicationfirewallpolicies/contosoWAF
驗證 Azure Front Door
建立 Azure Front Door 標準/進階版設定檔時,全域性部署組態需要幾分鐘的時間。 完成後,即可存取所建立的前端主機。 在瀏覽器中,前往 contoso-frontend.z01.azurefd.net
。 您的要求將會從來源群組中指定的伺服器自動路由傳送至距離最近的伺服器。
若要測試即時全域容錯移轉,請使用下列步驟:
如上面所述開啟瀏覽器,然後移至前端位址:
contoso-frontend.azurefd.net
。在 Azure 入口網站中,搜尋並選取 [應用程式服務]。 向下捲動以尋找您的其中一個 Web 應用程式,在此範例中為 WebAppContoso-1。
選取您的 Web 應用程式,然後依序選取 [停止] 及 [是] 來進行驗證。
重新整理您的瀏覽器。 您應該會看到相同的資訊頁面。
提示
這些動作會有一些延遲。 您可能需要再次重新整理。
尋找其他 Web 應用程式,並將其停止。
重新整理您的瀏覽器。 此時,您應該會看到一則錯誤訊息。
建立規則集
建立規則及,以自訂在邊緣處理 HTTP 要求的方式。 新增至規則集的傳遞規則可讓您充分掌控 Web 應用程式行為。 執行 az afd rule-set create,在 Azure Front Door 設定檔中建立規則集。
az afd rule-set create \
--profile-name contosoafd \
--resource-group myRGFDCentral \
--rule-set-name contosorules
建立傳遞規則並新增至您的規則集
在您的規則集中建立新的傳遞規則。 執行 az afd rule create,在規則集中建立傳遞規則。 在此範例中,我們將建立 HTTP 至 HTTPs 的重新導向規則。
az afd rule create \
--resource-group myRGFDCentral \
--rule-set-name contosorules \
--profile-name contosoafd \
--order 1 \
--match-variable RequestScheme \
--operator Equal \
--match-values HTTP \
--rule-name "redirect" \
--action-name "UrlRedirect" \
--redirect-protocol Https \
--redirect-type Moved
將動作或條件新增至您的傳遞規則
您可能會發現需要進一步自訂新的傳遞規則。 建立動作或條件後,您可視需要新增。 執行 az afd rule action add 或 az afd rule condition add,以更新您的規則。
新增動作
az afd rule action add \
--resource-group myRGFDCentral \
--rule-set-name contosorules \
--profile-name contosoafd \
--rule-name redirect \
--action-name "CacheExpiration" \
--cache-behavior BypassCache
新增條件
az afd rule condition add \
--resource-group myRGFDCentral \
--rule-set-name contosorules \
--profile-name contosoafd \
--rule-name redirect \
--match-variable RemoteAddress \
--operator GeoMatch \
--match-values "TH"
清除資源
不需要 Front Door 的資源時,請刪除這兩個資源群組。 刪除資源群組時也會刪除 Front Door 及其所有相關資源。
執行 az group delete:
az group delete \
--name myRGFDCentral
az group delete \
--name myRGFDEast