Azure 應用程式閘道] 中的疑難排解: 通訊閘錯誤 (502) 錯誤

設定應用程式閘道之後,您會收到下列錯誤訊息:

伺服器錯誤: 502-Web 伺服器時,收到不正確的回應作為閘道或 proxy 伺服器

請依照下列步驟執行,以 c老天後端集區長破折號pty:

  1. 在 Azure 入口網站、 s選擇所有的資源,然後選取應用程式 g在發生問題的 ateway。

  2. 應用程式閘道把刀,s選擇後端集區.

  3. 檢查目標s值。如果值為0 (零),表示是空的後端集區。

後端集區是空的嗎?

如果後端集區是空的而且沒有要求轉送給伺服器,應用程式閘道會傳回 「 HTTP 502 」 給用戶端的錯誤訊息。

若要解決這個問題問題請依照下列步驟執行,將後端伺服器新增至後端資料庫:

  1. 在 Azure 的入口網站,請選取所有資源,,,然後選取 [應用程式閘道。

  2. 在左邊的功能表中,選取 [後端集區]。

  3. 選取 [後端資料庫。

  4. 目標] 之下選取 [後端伺服器類型]。 注意伺服器可以是下列類型的其中一個:

    • IP 位址/FQDN

    • 虛擬機器

    • 虛擬機器的小數位數組

    • 應用程式服務

  5. 選取目標的虛擬機器或應用程式服務,或輸入的 IP 位址或 FQDN。

  6. 選取 [儲存]。

這並未解決問題?

請檢查是否所有後端伺服器都是否處於不健全狀況。

  1. 所有的資源,然後選取應用程式閘道。

  2. 應用程式閘道防禦中,選取 [規則]。識別規則所繫結至接聽程式的HTTP 設定後端集區的值。

  3. 應用程式閘道防禦中,選取 [後端健康情況

  4. 檢查是否所有伺服器上的狀態為Unhealthy的 HTTP 設定和您在步驟 2 中所識別的後端集區。

  5. 從 [詳細資料] 欄位中,記錄您看到詳細的錯誤訊息。這將會用於進一步的疑難排解。

     

是否所有的後端伺服器處於不健全狀況?

如果至少一個伺服器狀況良好,t之後增加的要求逾時,,,然後檢查 [問題是否已經解決。若要執行這項操作,請參考下列步驟:

  1. 在 Azure 的入口網站,請選取所有資源,,,然後選取 [應用程式閘道。

  2. 應用程式閘道防禦中,選取 [ HTTP 設定]。

  3. 選取您所建立的 [HTTP] 設定。在要求的逾時 (秒) ] 方塊中,輸入一個較高的值,如120。或者,您也可以輸入一個大於您的伺服器將回應傳回至每個要求所需的秒數的值。

  4. 按一下 [儲存]

注意如果要判斷多久,伺服器就會回應,請檢查存取記錄檔。針對每個要求, timeTaken值 (以毫秒為單位) 會指示請求會送出至用戶端的最後一個位元組的應用程式閘道接收到的第一個位元組的整個處理程序。

當應用程式閘道會轉送到後端資料庫伺服器的要求時,它會等待回應的設定期限。如果沒有這段時間內的後端伺服器沒有回應,這被視為逾時,並在應用程式閘道給用戶端傳回 HTTP 502 錯誤。如果發生這種情形,您應該考慮增加逾時值以 HTTP 設定。

從存取記錄檔的範例:

{"instanceId":"ApplicationGatewayRole_IN_1","clientIP":"13.83.18.255","clientPort":1984,"httpMethod":"GET","requestUri":"/","requestQuery":"X-AzureApplicationGateway-CACHE-HIT=0","userAgent":"-","httpStatus":502,"httpVersion":"HTTP/1.1","receivedBytes":45,"sentBytes":1646,"timeTaken":31020,"sslEnabled":"on","host":"www.consoto.com"}

請確定要求逾時設為高於timeTaken的值。若要收集記錄檔,您必須啟用診斷記錄,並傳送它的資料流儲存帳戶或記錄檔分析。如需詳細資訊,請參閱診斷記錄.

這並未解決問題?

如果您有基本的規則和路徑為基礎的規則,請確定路徑為基礎的規則設定為較高的優先順序。若要變更規則的優先順序,請依照下列步驟執行:

  1. 在 Azure 的入口網站,請選取所有資源,,,然後選取 [應用程式閘道。

  2. 應用程式閘道防禦中,選取 [規則]。

  3. 檢查是否有上述多站台的接聽項規則的基本的型別規則。如果沒有,請刪除基本類型的規則,然後建立具有基本的接聽程式的規則。新的規則會放在清單底端。如此一來,排定優先權多網站規則。

今日,依照建立順序處理規則。這是在其中所列在 「 入口 」,也在應用程式閘道規則組態,PowerShell 和 Microsoft Azure CLI 中的順序。在規則] 清單中,您可能會發現使用基本的接聽程式使用多重站台的接聽程式的規則前述所列的規則。當您使用其中一個所述的多站接聽項的規則,具有基本的接聽程式的主機名稱,會在存取應用程式閘道時作為捕捉所有和會攔截要求。這項規則可能會將要求傳送至錯誤或空白的後端集區。 若要避免這個問題,移動的規則,具有基本的接聽程式,以清單的底部,以便多站台的接聽程式優先。

這並未解決問題?

在後端健康狀態顯示,請選取您看到下列錯誤訊息之一:

如果要判斷是否要設定自訂的探查,請依照下列步驟執行:

  1. 在 Azure 的入口網站,請選取所有資源,,,然後選取 [應用程式閘道。

  2. 在 [左] 功能表中選取HTTP 設定],然後選取您所建立的 [HTTP] 設定。

  3. 如果已選取 [使用自訂的探查核取方塊,則您正在使用自訂的探查。

有自訂的探查中的應用程式閘道設定嗎?

在有問題的應用程式閘道,選取 [健康情況探查。檢查自訂探查設定根據您在後端健康狀況一節中的 [詳細資料] 欄位中收到的錯誤。

錯誤

動作

無法連線到伺服器

無法建立 TCP 工作階段。請檢查連接埠,在HTTP 設定中,並確認您可以連線到伺服器的連接埠或。也請檢查任何的網路安全性的群組或使用者定義路由是否會影響的流量。

探查狀態程式碼不相符: 收到 401

請檢查後端伺服器是否要求驗證。應用程式閘道探查不能傳遞到目前為止的驗證認證。請允許探查狀態程式碼中的 「 HTTP 401 」 符合或探查路徑,伺服器不需要驗證。

探查狀態程式碼不相符: 已接收的 403

請檢查是否允許存取路徑後端伺服器上。

探查狀態程式碼不相符: 已接收的 404

如果是可存取後端伺服器上,請檢查主機名稱路徑。可存取的值變更主機名稱或路徑參數。

探查狀態程式碼不相符: 收到 405

請檢查伺服器是否允許 HTTP GET 方法。

當您使用自訂的探查,卻收到 HTTP 錯誤時,您可以調整探查設定,讓應用程式閘道可以不斷探查到後端伺服器中存取路徑。您可以變更參數,例如主機名稱、 路徑、 可接受的狀態碼,以及回應主體的值。

若要進一步瞭解探查,請按一下應用程式閘道探查概觀

這並未解決問題?

請檢查您的伺服器是否可存取預設探查參數:

  • 預設探查會在 [< 通訊協定 >: / / 127.0.0.1: < 連接埠 > / 狀態碼 200 399 再接受。

  • 會繼承應用程式閘道執行個體中的 [ HTTP 設定] 區段中的通訊協定和連接埠。

  • 如果您的伺服器不是能夠在 localhost 上存取的請使用適當的主機名稱和通訊協定,來設定自訂的探查,並將與您正在使用的後端 HTTP 設定產生關聯。

  • 如果後端伺服器回應傳送給您想要允許 (例如 401) 不同的狀態碼,請將該程式碼納入探查符合條件。

這並未解決問題?

如果您收到 「 後端伺服器憑證必須能夠在應用程式閘道的 whitelisted"SSL 錯誤訊息,請遵循下列步驟來解決這個問題:

  1. 存取後端集區中的所指定伺服器。如果後端集區中指定的 IP 位址或 FQDN,請使用 https://< 存取伺服器ip 位址> / 或 https://<FQDN> /,然後檢查 [從 web 瀏覽器的憑證。

  2. 移至應用程式閘道刀、 選取 [ HTTTP 設定,然後確認此相同的憑證已上傳家的應用程式閘道中。如果您發現不相符,請到基底 64 編碼的.cer 檔案,匯出憑證的公開金鑰,然後再上載到HTTP 設定的 [相同的金鑰。 如需詳細資訊,請參閱建立憑證的家後端與 Azure 應用程式閘道

附註如果後端伺服器已設定為 SNI (伺服器名稱指示),您必須使用 FQDN 後, 端集區中。這應與後端伺服器,在應用程式閘道 v1 SKU 的情況下在繫結。相較之下,在 [v2 SKU,您可以設定 HTTP 設定 「 覆寫主機名稱 」 一節中的 SNI FQDN。否則,關閉 SNI,並設定後援憑證。

若要成功 HTTPS 探查,您必須解除封鎖 (或"whitelist") 中應用程式閘道的後端伺服器的憑證。例如,您必須將您的伺服器憑證的公開金鑰上載至基底 64 編碼的.cer 格式的 HTTP 設定。為應用程式閘道 v2 而言,您必須上載.cer 格式後端伺服器憑證的根憑證。請注意,您不必上載解除封鎖任何憑證,如果後端伺服器是受信任的 Azure 服務,或已知的 CA 所簽署。

如果您收到 「 後端伺服器憑證必須是應用程式閘道] 中的 whitelisted 」 錯誤訊息,表示上載應用程式閘道] 中的憑證不符合一個從後端伺服器。

這並未解決問題?

如果探查失敗,因為 HTTPS 探查連線錯誤發生,請遵循下列步驟:

  1. 在 Azure 的入口網站中選取所有的資源,然後再選取 [應用程式閘道。

  2. 應用程式閘道把刀中,選取 [接聽程式。

  3. 檢查您的應用程式閘道的 SSL 原則,並確蓋已選取正確的 TLS 版本與加密套件,

  4. 請確認後端伺服器支援相同的 TLS 版本與加密套件,藉由識別哪個 TLS 版本與加密套件目前使用中連線。若要這樣做,請採用後端伺服器使用 Wireshark 或網路監視器擷取網路封包,然後檢查 TLS 的用戶端和伺服器 Hello 封包。例如: 250 4.045574 10.171.40.80 40.126.18.38 TLSv1.2 268 Client Hello 254 4.075988 40.126.18.38 10.171.40.80 TLSv1.2 92 Server Hello, Certificate, Server Key Exchange, Server Hello Done

     

這並未解決問題?

恭喜 !您的問題已解決。

如果您的問題持續發生,請請連絡 Azure 支援以取得進一步協助。

本指南用途

可協助您疑難排解所發生 Azure 應用程式閘道] 中的通訊閘錯誤 (502) 錯誤。

適用對象

使用應用程式閘道,來管理 web 應用程式的流量的系統管理員。

如何運作?

提供檢查清單和步驟,以協助您識別問題,並到達解析的順序。

預計完成時間:

15-30 分鐘。

需要更多協助?

擴展您的技能
探索訓練
優先取得新功能
加入 Microsoft 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與我們的其中一個 Office 支援專員連絡以深入了解您的意見。

×