全域外部應用程式負載平衡器可讓您在產生 HTTP 錯誤狀態碼 (4xx
和 5xx
) 時,自訂錯誤回應。您可以自訂負載平衡器和後端執行個體產生的錯誤回應。您也可以為 Google Cloud Armor 拒絕流量時產生的錯誤回應代碼,自訂錯誤回應。
以下是自訂錯誤頁面的範例,您可以為面向外部的消費者應用程式設定錯誤回應,並使用自家公司的品牌和標誌、相關網頁的連結,以及自訂訊息。

您可以使用自訂錯誤回應政策,為不同的 HTTP 錯誤狀態代碼、網址網域、網址路徑、HTTP 要求標頭和參數欄位設定不同的錯誤回應。
傳回自訂錯誤回應可提供下列優點,協助您改善使用者體驗:
- 提供一致的品牌體驗
- 提供相關的背景資訊,提升可用性和使用者體驗
- 降低停機和用戶端錯誤的負面影響
- 提升網路安全性
如果您未設定自訂錯誤回應政策,系統會提供一般非品牌的錯誤物件,如圖 2 所示。

用途
自訂錯誤回應功能可因應許多用途,本節將提供一些概略的範例。
定義自己的維護頁面
當後端發生異常或處於維護模式時,您可以傳回包含公司品牌和資訊的錯誤頁面。您可以建立內容相關的錯誤頁面,其中包含聯絡中心電話號碼或使用者應重新嘗試存取網站的時間等實用資訊。您可以根據主機名稱和 HTTP 錯誤代碼等錯誤條件,自訂錯誤頁面。
定義自己的預設錯誤網頁
您可以根據特定錯誤代碼設定自訂錯誤回應。舉例來說,您可以為 401 (Unauthorized)
HTTP 回應碼設定錯誤頁面,並顯示「登入或註冊」訊息。您也可以設定預設錯誤頁面,其中包含公司品牌和其他相關資訊,適用於所有其他 4xx
系列和 5xx
系列 HTTP 錯誤代碼。
定義安全性規則的錯誤回應
當 Google Cloud Armor 安全性政策拒絕流量時,您可以針對產生的錯誤回應碼傳回自訂錯誤頁面。請務必使用 Google Cloud Armor 安全性規則中輸入的 4xx
系列或 5xx
系列 HTTP 錯誤代碼,設定錯誤頁面。
減輕停機影響
在適用情況下,您可以設定錯誤回應,以便傳回 200 (OK)
HTTP 狀態碼,並提供靜態網頁,讓使用者在服務中斷期間看到更多相關且實用的資訊,而非錯誤網頁。
根據用戶端要求類型自訂錯誤回應
您可以根據 HTTP 要求標頭和參數自訂錯誤回應,例如 Content-Type
標頭。將原始要求轉送至錯誤服務時,轉送作業可以考量 Content-Type
標頭,以便提供網頁 (針對來自瀏覽器的要求) 或 JSON (針對來自網路 API 的要求)。
自訂錯誤回應政策的運作方式
您可以在 網址對應資源的三個層級定義自訂錯誤回應政策:負載平衡器層級、網址網域層級和網址路徑層級。
負載平衡器層級。這項政策會套用至負載平衡器收到的所有流量。
網址網域層級。這項政策會套用至導向至特定網域名稱或主機名稱的流量,例如
www.example.com
。網址路徑層級。這項政策會套用至導向特定路徑的流量,例如
www.example.com/images/*
。在這個層級,您也可以使用進階比對條件搭配 HTTP 要求標頭和參數,例如Content-Type:application/json
。
下表顯示在網址對應的負載平衡器層級、網址網域層級和網址路徑層級套用的自訂錯誤回應政策。
政策層級 | API 欄位 |
---|---|
負載平衡器 | urlMaps.defaultCustomErrorResponsePolicy |
網址網域 | pathMatchers[].defaultCustomErrorResponsePolicy |
網址路徑 |
|
如果您在網址對應資源的多個層級設定自訂錯誤回應政策,系統會傳回網址對應最底層自訂錯誤政策指定的錯誤物件。在較低層級網址對應中定義的錯誤回應政策較為具體,優先順序高於在較高層級網址對應中定義的錯誤回應政策。
舉例來說,只有在政策符合錯誤條件,且較低層級 (網址網域或網址路徑) 的錯誤代碼尚未定義相符的政策時,系統才會套用負載均衡器層級的自訂錯誤回應政策。同樣地,只有在政策符合錯誤條件,且未為較低層級 (網址路徑) 的錯誤代碼定義相符的政策時,系統才會套用網址網域層級的自訂錯誤回應政策。如要進一步瞭解這項設定,請參閱「為不同網域、路徑和錯誤回應代碼設定精細的自訂錯誤回應政策」。
指定多個錯誤回應規則,以便比對 HTTP 錯誤回應代碼
您可以在自訂錯誤回應政策的任何層級指定多個錯誤回應規則。這些規則可將 HTTP 錯誤回應與特定錯誤代碼或一系列錯誤代碼進行比對。如果您為一系列錯誤代碼和特定錯誤代碼指定規則,則以特定錯誤代碼的規則優先。
舉例來說,假設您為 401 (Unauthorized)
錯誤代碼設定規則,並為所有 4xx
系列錯誤代碼設定另一項規則。如果後端服務傳回 401
錯誤代碼,系統就會套用與 401
錯誤相符的規則。不過,如果後端服務傳回 403
錯誤碼,則 4xx
錯誤的規則就會生效。
覆寫 HTTP 回應代碼
您可以透過錯誤回應規則修改負載平衡器傳回的 HTTP 回應代碼。這基本上表示您可以覆寫伺服器產生的回應代碼,並定義要求的最終回應代碼。您可以指定傳回任何 HTTP 回應代碼,包括 200 (OK)
、4xx
系列或 5xx
系列的回應代碼,或任何其他三位數回應代碼。如要進一步瞭解如何覆寫回應碼,請參閱「為特定主機的特定錯誤代碼設定錯誤網頁」一文。
如果您定義覆寫回應碼,系統會在負載平衡記錄中擷取該碼,並將其設為新欄位 overrideResponseCodeServed
。只有自訂錯誤回應政策套用覆寫回應代碼的請求,才會填入這個欄位。
登錄在 httpRequest
欄位的 status
代碼不會受到影響。它會擷取伺服器產生的 HTTP 回應碼,或負載平衡器傳回的 HTTP 回應。如果回應碼已由自訂錯誤回應政策修改,則此狀態碼可能與傳送至用戶端的實際碼不同。
快取自訂錯誤回應
如要快取自訂錯誤回應,請為產生錯誤的後端指定負面快取政策。這樣做的原因,是為了針對一般錯誤或重新導向,套用精細的快取控管機制。這麼做可以減少來源的負載量,並縮短回應延遲時間來改善使用者體驗。
為產生錯誤的後端定義的負面快取政策,一律優先於在錯誤服務中為錯誤物件定義的 Cache-Control
中繼資料。此外,如果負載平衡器傳回覆寫回應代碼,則系統會根據覆寫回應代碼的值套用負快取政策,而非根據後端傳回給負載平衡器的原始回應代碼。如果非錯誤代碼 (HTTP 200
) 以覆寫回應代碼的形式傳回,則不會套用負面快取政策。
如果失敗回應的存留時間 (TTL) 尚未到期,負載平衡器會繼續提供快取內容,而不會將要求導向後端服務或後端值區。不過,這項行為取決於您是否為負載平衡器啟用 Cloud CDN。
負載平衡器已啟用 Cloud CDN
本節說明啟用 Cloud CDN 並使用自訂錯誤回應時,負載平衡器的行為。
負載平衡器收到要求後,會檢查 Cloud CDN 快取。如果負載平衡器找到使用者要求的快取回應,就會將快取回應傳回給使用者。這個快取回應可以是使用者要求的內容,或是自訂錯誤物件。
如果快取未命中,負載平衡器會處理要求,並將其傳送至後端。
如果後端提供非錯誤回應,系統會將該回應傳回給使用者。不過,如果用戶端要求遇到錯誤 (
4xx
或5xx
HTTP 回應代碼),負載平衡器會嘗試從您指定的錯誤服務取得自訂錯誤物件,方法如下:負載平衡器會檢查所有自訂錯誤回應政策,並取得與錯誤狀態碼和其他比對條件相對應的自訂錯誤物件的適當路徑。
負載平衡器會將自訂錯誤物件的要求轉送至您在自訂錯誤回應政策中指定的錯誤服務。「錯誤服務」一詞是指提供自訂錯誤內容的後端值區或後端服務。
負載平衡器會將自訂錯誤物件傳回給提出要求的用戶端。也會將物件傳送至 Cloud CDN,以便快取錯誤物件,時間長度由
cdnPolicy.negativeCachingPolicy[].ttl
指定。
負載平衡器的 Cloud CDN 已停用
如果 Cloud CDN 已停用,建議您使用後端值區做為錯誤服務,而非後端服務。這是因為如果 Cloud CDN 已停用,後端服務就無法快取內容;不過,後端值區具有內建快取功能,即使 Cloud CDN 已停用,也能快取錯誤回應。
限制
只有全域外部應用程式負載平衡器支援自訂錯誤回應。不支援區域和傳統模式。
如果無法從錯誤服務擷取自訂錯誤物件 (例如內容路徑設定錯誤),系統會提供一般非品牌錯誤物件。
自訂錯誤回應政策不會監控或篩除錯誤服務傳回的物件,以防安全性風險。因此,您應盡力消除漏洞,並限制潛在暴露的影響。
自訂錯誤回應僅支援可公開讀取的 Cloud Storage 值區。
為避免在使用 Cloud Storage 儲存桶時發生任何設定錯誤,請參閱 Cloud Storage 的最佳做法。
如果全域外部應用程式負載平衡器只有後端值區,自訂錯誤回應就無法運作。除了後端值區之外,您還必須將至少一個後端服務附加至負載平衡器。
任何根據自訂錯誤回應來源定義的自訂回應標頭,都不會套用至傳出的回應。
自訂錯誤回應政策只會套用至實際來自後端的 HTTP 回應。如果回應來自 Google 前端 (GFE),您可能會看到其他非預期的 HTTP 回應代碼。
自訂錯誤回應與下列要求類型不相容:
- 要求內含會觸發容錯植入政策的主體。
- 大型要求:後端服務在完全讀取內文之前傳送回應。
- 包含
Authorization
標頭的要求。如果要求包含Authorization
標頭,Cloud Storage 會傳回Authentication Required
回應。
定價
使用自訂錯誤回應不會產生額外費用。適用 Google Cloud 負載平衡的標準價格。詳情請參閱「定價」。