針對 Azure Front Door 常見問題進行疑難排解
本文說明如何針對您可能會面臨的 Azure Front Door 設定常見路由問題,進行疑難排解。
其他偵錯 HTTP 標頭
您可以要求 Azure Front Door 傳回額外的偵錯 HTTP 回應標頭。 如需詳細資訊,請參閱選擇性回應標頭 (機器翻譯)。
幾秒鐘後來自 Azure Front Door 的 503 或 504 回應
徵兆
- 不需經過 Azure Front Door 傳送至後端的一般要求成功。 透過 Azure Front Door 進行導致 503 或 504 錯誤回應。
- 來自 Azure Front Door 的失敗通常會在約 30 秒之後出現。
- 出現間歇 503 錯誤,並顯示 "ErrorInfo: OriginInvalidResponse"。
原因
此問題可能是由以下三個原因之一所致:
- 您來源花費的時間超過為接收來自 Azure Front Door 要求設定的逾時時間。 預設逾時值為 30 秒。
- 傳送回應給來自 Azure Front Door 的要求所需的時間超過逾時值。
- 用戶端傳送了具 Accept-Encoding 標頭的位元組範圍要求,這表示已啟用壓縮。
疑難排解步驟
直接將要求傳送至來源,不經過 Azure Front Door。 查看來源通常需要多久時間才會回應。
透過 Azure Front Door 傳送要求,並查看是否收到任何 503 回應。 如果沒有,問題可能不是逾時問題。 建立支援要求,以進一步對問題進行疑難解答。
如果經由 Azure Front Door 的要求造成 503 錯誤回應碼,請為 Azure Front Door 設定 [來源回應逾時]。 您最多可將預設逾時增加到 4 分鐘 (240 秒)。 若要設定,請移至 Front Door 設定檔的概觀頁面。 選取 [來源回應逾時],然後輸入介於 16 到 240 秒之間的值。
注意
設定來源回應逾時的功能只能在 Azure Front Door Standard/Premium 中使用。
如果增加逾時未解決問題,請使用 Fiddler 等工具或瀏覽器的開發人員工具,檢查用戶端是否傳送具 Accept-Encoding 標頭的位元組範圍要求。 使用此選項會導致來源以不同內容長度回應。
如果用戶端傳送具 Accept-Encoding 標頭的位元組範圍要求,您有兩個選擇。 第一個選項是在來源或 Azure Front Door 上停用壓縮。 第二個選項是可以建立規則集規則,從位元組範圍要求的要求中移除 Accept-Encoding。
僅針對 HTTPS 的來自 Azure Front Door 的 503 回應
徵兆
- 只會針對 Azure Front Door 啟用 HTTPS 的端點傳回 503 回應。
- 不需經過 Azure Front Door 傳送至後端的一般要求成功。 透過 Azure Front Door 進行導致 503 錯誤回應。
- 出現間歇 503 錯誤,並顯示 "ErrorInfo: OriginInvalidResponse"。
原因
此問題的原因可能為下列三件事之一:
- 後端集區是 IP 位址。
- 後端伺服器會傳回不符合 Azure Front Door 後端集區完整功能變數名稱 (FQDN) 的憑證。
- 後端集區是 Azure Web Apps 伺服器。
疑難排解步驟
後端集區是 IP 位址。
必須停用
EnforceCertificateNameCheck
。Azure Front Door 有
EnforceCertificateNameCheck
切換。 根據預設會啟用此設定。 啟用時,Azure Front Door 會檢查後端集區主機名稱 FQDN 是否符合後端伺服器憑證的憑證名稱,或主體別名延伸模組的其中一個項目。如何從 Azure 入口網站停用
EnforceCertificateNameCheck
:在入口網站的 Azure Front Door (傳統)[設計] 窗格中,使用切換按鈕開啟或關閉此設定。
針對 Azure Front Door 標準和進階階層,當您將來源新增至來源群組或設定路由時,可以在來源設定中找到此設定。
後端伺服器會傳回不符合 Azure Front Door 後端集區 FQDN 的憑證。 若要解決此問題,您有兩個選擇:
- 傳回的憑證必須符合 FQDN。
- 必須停用
EnforceCertificateNameCheck
。
後端集區是 Azure Web Apps 伺服器:
- 檢查 Azure Web 應用程式是否已設定 IP 型 SSL,而不是以 SNI(伺服器名稱指示)為基礎。 如果 Web 應用程式設定為以 IP 為基礎,應變更為 SNI。
- 如果後端因為憑證失敗而狀況不良,會傳回 503 錯誤訊息。 您可以在連接埠 80 和 443 上確認後端的健康情況。 如果只有 443 狀況不良,可能是 SSL 的問題。 由於後端設定為使用 FQDN,因此我們知道其正在傳送 SNI。
使用 OPENSSL 驗證正在傳回的憑證。 若要進行這項檢查,請使用
-servername
連線至後端。 應會傳回 SNI,其必須與後端集區的 FQDN 相符:openssl s_client -connect backendvm.contoso.com:443 -servername backendvm.contoso.com
傳送至自訂網域的要求會傳回 400 狀態碼
徵兆
- 您已建立 Azure Front Door 執行個體。 傳送至網域或前端主機的要求傳回 HTTP 400 狀態碼。
- 您已建立自訂網域的 DNS(功能變數名稱伺服器)對應至您設定的前端主機。 將要求傳送至自訂網域主機名稱傳回 HTTP 400 狀態碼。 這似乎不會路由至您設定的後端。
原因
如果您未針對已新增為前端主機的自訂網域設定路由規則,就會發生此問題。 必須明確為該前端主機新增路由規則。 即使已針對 Azure Front Door 子網域 (即 *.azurefd.net) 中的前端主機設定路由規則,仍須建立規則。
疑難排解步驟
為自訂網域新增路由規則,將流量導向選取的來源群組。
Azure Front Door 不會將 HTTP 重新導向至 HTTPS
徵兆
Azure Front Door 有路由規則,可將 HTTP 重新導向至 HTTPS,但存取網域仍將 HTTP 當作通訊協定。
原因
如果您未正確為 Azure Front Door 設定路由規則,就可能有此行為。 您目前的設定並非專屬,而且可能有衝突的規則。
疑難排解步驟
傳送至前端主機名稱的要求會傳回 411 狀態碼
徵兆
您已建立 Azure Front Door 標準/進階版執行個體並設定下列項目:
- 前端主機。
- 有至少一個來源的來源群組。
- 將前端主機連線至來源群組的路由規則。
要求傳送至已設定的前端主機時,您的內容似乎無法使用,因為傳回了 HTTP 411 狀態碼。
這些要求的回應也可能在回應本文中包含 HTML 錯誤頁面,其中包含說明。 例如「HTTP 錯誤 411。 要求必須區塊化或有內容長度。」
原因
這個徵狀的可能原因有幾個。 整體原因是您的 HTTP 要求未完全符合 RFC 規範。
不符合規範的範例,是在沒有 Content-Length 或 Transfer-Encoding 標頭的情況下傳送的 POST
要求。 範例使用 curl -X POST https://example-front-door.domain.com
。 此要求不符合 RFC 7230 中設定的需求。 Azure Front Door 會以 HTTP 411 回應加以封鎖。 這類要求不會記錄。
此行為與 Azure Front Door 的 Web 應用程式防火牆 (WAF) 功能不同。 目前無法停用此行為。 所有 HTTP 要求都必須符合需求,即使未使用 WAF 功能也一樣。
疑難排解步驟
- 確認您的要求符合必要 RFC 中設定的需求。
- 記下回應您的要求而傳回的任何 HTML 訊息本文。 訊息本文通常會確切說明您要求不符合規範的「原因」。
我的來源已設定為 IP 位址。
徵兆
來源已設定為 IP 位址。 來源狀況良好,但拒絕來自 Azure Front Door 的要求。
原因
Azure Front Door 會在 SSL 交握期間,將來源主機名稱作為 SNI 標頭。 由於來源已設定為IP位址,因此失敗可能是下列其中一個原因:
- 如果憑證名稱檢查已停用,則問題的原因可能在於原始憑證邏輯中。 此邏輯可能會拒絕任何沒有符合憑證之有效主機標頭的要求。
疑難排解步驟
將來源從 IP 位址變更為符合來源憑證的有效憑證的 FQDN。
下一步
- 了解如何建立 Front Door。
- 了解如何建立 Front Door 標準/進階。