Share via


教學課程:使用 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 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。 您的要求將會從來源群組中指定的伺服器自動路由傳送至距離最近的伺服器。

若要測試即時全域容錯移轉,請使用下列步驟:

  1. 如上面所述開啟瀏覽器,然後移至前端位址:contoso-frontend.azurefd.net

  2. 在 Azure 入口網站中,搜尋並選取 [應用程式服務]。 向下捲動以尋找您的其中一個 Web 應用程式,在此範例中為 WebAppContoso-1

  3. 選取您的 Web 應用程式,然後依序選取 [停止] 及 [是] 來進行驗證。

  4. 重新整理您的瀏覽器。 您應該會看到相同的資訊頁面。

    提示

    這些動作會有一些延遲。 您可能需要再次重新整理。

  5. 尋找其他 Web 應用程式,並將其停止。

  6. 重新整理您的瀏覽器。 此時,您應該會看到一則錯誤訊息。

    Both instances of the web app stopped

建立規則集

建立規則及,以自訂在邊緣處理 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 addaz 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