Share via


建立應用程式閘道的自訂錯誤頁面

應用程式閘道可讓您建立自訂的錯誤頁面,而不是顯示預設的錯誤頁面。 您可以針對與不同回應碼相關的錯誤,使用自己的商標和版面配置。 以下提供一些設定自訂錯誤頁面的案例

  • 顯示「502 錯誤的閘道」回應碼的維護或狀態頁面。 當您的應用程式閘道沒有後端伺服器可在排程維護期間將流量路由傳送至其中,或後端集區伺服器發生未預期的問題時,這非常有用。
  • 顯示「403 禁止」回應碼的自訂未經授權的存取頁面,這會在 WAF 處於預防模式並封鎖惡意流量時發生。
  • 顯示公司品牌頁面,其中包含發生問題時的連絡詳細資料。

支援的回應碼

下列回應碼支援自訂錯誤頁面:

回應碼 描述
400 不正確的要求 (處於預覽狀態)
403 禁止
405 不允許的方法 (處於預覽狀態)
408 要求逾時 (處於預覽狀態)
500 內部伺服器錯誤 (處於預覽狀態)
502 閘道不正確
503 服務無法使用 (處於預覽狀態)
504 閘道逾時 (處於預覽狀態)

注意

  • API 版本 2022-09-01 或更新版本應該用來設定新回應碼 (處於預覽狀態) 的錯誤頁面。
  • 目前不支持回應碼 404 (找不到頁面)。
  • 系統會針對應用程式閘道所產生的回應碼顯示自訂錯誤頁面。 如果錯誤源自後端伺服器,即會原封不動地傳至用戶端。

設定層級

自訂錯誤頁面可定義於全域或接聽程式層級上:

  • 全域層級:在全域層級設定的錯誤頁面會套用至該應用程式閘道的所有接聽程式。 目前不支援透過 Azure 入口網站進行設定。
  • 接聽程式層級:接聽程式層級的錯誤頁面可讓您更精細地控制該接聽程式所服務之應用程式的錯誤頁面。

注意

針對閘道使用全域和接聽程式層級錯誤頁面的組合時,您必須明確提及該接聽程式所有所需回應碼的 URL。 接聽程式特定的設定會覆寫先前所有適用於該接聽程式的全域設定。

需求

若要建立自訂錯誤頁面,您應該

  • 知道需要自訂錯誤頁面的回應碼。
  • 知道 HTML 頁面的對應遠端位置 (URL)。 這必須是可公開存取的檔案。
  • 確定可公開存取錯誤頁面,並傳回 200 回應。
  • 確定錯誤頁面應為 *.htm 或 *.html 副檔名類型。
  • 確定頁面大小小於 1 MB。

您可以參考此 HTML 檔案的內部或外部影像/CSS。 對於外部參考的資源,請使用可公開存取的絕對 URL。 使用 base64 編碼的內嵌映像、JavaScript 或 CSS 時,請留意 HTML 檔案大小。

注意

  • 在 Azure 生態系統中,您必須使用 Azure Blob 儲存體帳戶或虛擬機器來裝載錯誤頁面。 請注意,Blob 儲存體應該可直接存取,因為目前不支援 Azure CDN 服務前端的儲存體帳戶。
  • 您也可以選擇在任何遠端位置裝載錯誤頁面。
  • 不支援相對連結。

運作方式

在應用程式閘道的設定中指定錯誤頁面之後,您的閘道就會透過網際網路驗證 HTML 頁面的連線能力。 然後,會在其本機快取上下載檔案。

當用戶端面臨錯誤時,您的應用程式閘道就會傳回回應碼和該 HTML 頁面。 用戶端會直接擷取任何外部參考的資源 (例如,影像、JavaScript 和 CSS 檔案)。

您的應用程式閘道不會定期檢查來源檔案的位置以擷取新版本。 您可以在閘道上執行任何設定更新,手動更新檔案的快取。 例如,將錯誤 URL 從第 1 頁變更為第 2 頁,然後變更回第 1 頁,或在新增接聽程式時變更。

入口網站設定

設定接聽程式特定的自訂錯誤頁面的步驟:

  1. 在入口網站中瀏覽至應用程式閘道,然後選擇所需的資源。

  2. 選取 [接聽程式],然後瀏覽至您要指定錯誤頁面的特定接聽程式。

  3. 在 [自訂錯誤頁面] 區段底下,為必要的狀態碼指定可公開存取的 URL。

  4. 選取 [儲存]。

    Screenshot of Application Gateway custom error page.

Azure PowerShell 組態

您可以使用 Azure PowerShell 設定自訂錯誤頁面。 例如,全域自訂錯誤頁面:

$appgw   = Get-AzApplicationGateway -Name <app-gateway-name> -ResourceGroupName <resource-group-name>

$updatedgateway = Add-AzApplicationGatewayCustomError -ApplicationGateway $appgw -StatusCode HttpStatus502 -CustomErrorPageUrl "http://<website-url>"

Set-AzApplicationGateway -ApplicationGateway $appgw

或接聽程式層級的錯誤頁面:

$appgw   = Get-AzApplicationGateway -Name <app-gateway-name> -ResourceGroupName <resource-group-name>

$listener01 = Get-AzApplicationGatewayHttpListener -Name <listener-name> -ApplicationGateway $appgw

$updatedlistener = Add-AzApplicationGatewayHttpListenerCustomError -HttpListener $listener01 -StatusCode HttpStatus502 -CustomErrorPageUrl "http://<website-url>"

Set-AzApplicationGateway -ApplicationGateway $appgw

如需詳細資訊,請參閱 Add-AzApplicationGatewayCustomErrorAdd-AzApplicationGatewayHttpListenerCustomError

下一步

如需應用程式閘道診斷的資訊,請參閱應用程式閘道的後端健康情況、診斷記錄和計量