本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
HTTP 502 狀態碼 (無效的閘道)
HTTP 502 狀態碼(錯誤的網關)表示 CloudFront 無法提供請求的對象,因為它無法連接到原始服務器。
主題
CloudFront 和自訂原始伺服器之間的 SSL/TLS 交涉失敗
如果您使用自訂來源,且設定 CloudFront 為在 CloudFront 與原始伺服器之間需要 HTTPS,則問題可能是網域名稱不相符。在原始伺服器上安裝的 SSL/TLS 憑證在 Common Name (通用名稱) 欄位包括網域名稱,且在 Subject Alternative Names (主體別名) 欄位中可能還有更多。(在憑證網域名稱中CloudFront 支援萬用字元。) 憑證中的其中一個網域名稱必須符合一或兩個下列的值:
-
您為 Origin Domain Name (原始網域名稱) 指定的值,適用於您分佈中的可用來源。
-
Host
標頭的值,如果您配置 CloudFront 為將Host
標頭轉發到您的來源。如需有關轉發Host
標頭到原始伺服器的詳細資訊,請參閱根據請求標頭快取內容。
如果網域名稱不相符,SSL/TLS 交涉就會失敗,並 CloudFront 傳回 HTTP 狀態碼 502 (錯誤的閘道),並將X-Cache
標頭設定為。Error from cloudfront
若要判斷憑證中的網域名稱是否與分佈或 Host
標頭中的 Origin Domain Name (原始伺服器網域名稱) 相符,您可以使用線上 SSL 檢查或 OpenSSL。如果網域名稱不相符,您有兩個選項:
取得包括適用的網域名稱的新 SSL/TLS 憑證。
如果您要使用 AWS Certificate Manager (ACM),請參閱《AWS Certificate Manager 使用者指南》中的請求公有憑證以請求新的憑證。
變更發佈組態,以便 CloudFront 不再嘗試使用 SSL 與原始伺服器連線。
線上 SSL 檢查
若要尋找 SSL 測試工具,請搜尋網際網路「線上 ssl 檢查。」 通常需要指定網域名稱,且此工具會傳回有關 SSL/TLS 憑證的各種資訊。確認憑證在 Common Name (通用名稱) 或 Subject Alternative Names (主體別名) 欄位中包含您的網域名稱。
OpenSSL
若要協助疑難排解來源的 HTTP 502 錯誤 CloudFront,您可以使用 OpenSSL 嘗試建立與原始伺服器的 SSL/TLS 連線。如果 OpenSSL 無法建立連線,可能表示原始伺服器的 SSL/TLS 組態發生問題。如果 OpenSSL 能夠建立連線,它會傳回原始伺服器憑證的相關資訊,包括憑證的通用名稱 (Subject CN
欄位) 和主體別名 (Subject Alternative Name
欄位)。
使用下列 OpenSSL 命令來測試與原始伺服器的連線 (將原始網域名稱
取代為原始伺服器的網域名稱,例如 example.com):
openssl s_client -connect
origin domain
name
:443
如果下列為真:
-
原始伺服器支援有多個 SSL/TLS 憑證的多個網域名稱
-
您的分佈設定為將
Host
標頭轉送至原始伺服器
然後將 -servername
選項新增至 OpenSSL 命令,如下列範例所示 (將 CNAME
取代為您的分佈中設定的 CNAME):
openssl s_client -connect
origin domain
name
:443 -servername
CNAME
原始伺服器無法回應受支援的加密/通訊協定
CloudFront 使用密碼和通訊協定連線到原始伺服器。如需 CloudFront 支援的密碼和通訊協定清單,請參閱。與來源之間支援的通訊協定 CloudFront 和密碼如果您的來源沒有回應 SSL/TLS 交換中的這些密碼或通訊協定之一, CloudFront 則無法連線。您可以使用如 SSL Labs
原始伺服器的 SSL/TLS 憑證已過期、無效、已自我簽署,或憑證鏈順序錯誤
如果原始伺服器傳回下列內容, CloudFront 請中斷 TCP 連線、傳回 HTTP 狀態碼 502 (錯誤閘道),並將標X-Cache
頭設定為Error from cloudfront
:
-
過期的憑證
-
無效的憑證
-
已自我簽署的憑證
-
憑證鏈順序錯誤
注意
如果完整的憑證鏈結 (包括中繼憑證) 不存在, CloudFront 就會中斷 TCP 連線。
如需有關在自訂原始伺服器上安裝 SSL/TLS 憑證的詳細資訊,請參閱 CloudFront 與您的自訂原始伺服器之間的通訊需要 HTTPS。
在原始伺服器設定中原始伺服器無法回應指定的連接埠
當您在 CloudFront 發行版上建立來源時,您可以針對 HTTP 和 HTTPS 流量設定 CloudFront連接至原始伺服器的連接埠。根據預設,這些都是 TCP 80/443。您可以選擇修改這些連接埠。如果您的來源因為任何原因拒絕這些連接埠上的流量,或者您的後端伺服器在連接埠上沒有回應, CloudFront 將無法連線。
若要故障診斷這些問題,請檢查基礎設施中執行的任何防火牆和驗證它們不會封鎖受支援的 IP 範圍。如需詳細資訊,請參閱《Amazon Web Services 一般參考》中的 AWS IP 地址範圍。此外,驗證 Web 伺服器是否可在原始伺服器上執行。