メニュー
Amazon CloudFront
開発者ガイド (API バージョン 2016-09-29)

HTTP 502 ステータスコード (不正なゲートウェイ)

HTTP 502 ステータスコード (不正なゲートウェイ) は、CloudFront がオリジンサーバーに接続できず、リクエストされたオブジェクトを提供できなかった場合に返されます。

CloudFront とカスタムオリジンサーバー間の SSL/TLS ネゴシエーションエラー

カスタムオリジンを使用していて、CloudFront とオリジンの間に HTTPS を要求するように CloudFront を設定した場合、問題はドメイン名の不一致である場合があります。オリジンにインストールした SSL/TLS 証明書では、[Common Name] フィールドにドメイン名が含まれ、[Subject Alternative Names] フィールドにもドメイン名がいくつか含まれることがあります。 (CloudFront は証明書ドメイン名にワイルドカード文字を使用できます)。証明書のドメイン名の 1 つは、次の値の 1 つまたは両方と一致する必要があります。

  • ディストリビューションの該当するオリジンの [Origin Domain Name] に指定した値。

  • Host ヘッダーをオリジンに転送するように CloudFront を設定した場合の Host ヘッダーの値。Host ヘッダーのオリジンへの転送の詳細については、「リクエストヘッダーに基づくコンテンツのキャッシュ」を参照してください。

ドメイン名が一致しない場合、SSL/TLS ハンドシェイクは失敗し、CloudFront は HTTP ステータスコード 502 (不正なゲートウェイ) を返し、X-Cache ヘッダーを Error from cloudfront に設定します。

証明書のドメイン名がディストリビューションまたは Host ヘッダーの [Origin Domain Name] と一致するかどうかを確認するには、オンライン SSL チェッカーまたは OpenSSL を使用できます。ドメイン名が一致しない場合、2 つのオプションがあります。

  • 該当するドメイン名を含む新しい SSL/TLS 証明書を取得します。

    AWS Certificate Manager (ACM) を使用している場合は、「証明書のリクエスト」 (AWS Certificate Manager ユーザーガイド) を参照して新しい証明書をリクエストしてください。

  • CloudFront で SSL を使用してオリジンに接続しないように、ディストリビューション設定を変更します。

オンライン SSL チェッカー

SSL テスト ツールを見つけるには、インターネットで「online ssl checker」を検索します。通常、ドメイン名を指定すると、ツールから SSL/TLS 証明書に関するさまざまな情報が返されます。証明書の [Common Names] フィールドまたは [Subject Alternative Names] フィールドにドメイン名が含まれていることを確認します。

OpenSSL

CloudFront がオリジンと接続を確立できるかどうかを確認するには、OpenSSL を使用してオリジンへの SSL/TLS 接続を試み、オリジンの証明書が正しく設定されていることを確認します。OpenSSL で接続できる場合は、オリジンサーバーの証明書に関する情報が返されます。

使用するコマンドは、SNI (Server Name Indication) をサポートするクライアントを使用しようしているかどうかによって異なります。

クライアントが SNI をサポートする場合

openssl s_client –connect domainname:443 –servername domainname

クライアントは SNI をサポートしない場合

openssl s_client –connect domainname:443

domainname は適切な値に置き換えます。

  • Host ヘッダーをオリジンに転送しない場合domainname をオリジンのドメイン名に置き換えます。

  • ホストヘッダーをオリジンに転送する場合domainname を CloudFront ディストリビューションで使用している CNAME に置き換えます。

サポートされている暗号化/プロトコルではオリジンが応答しません

CloudFront は暗号とプロトコルを使用してオリジンサーバーに接続します。CloudFront がサポートする暗号とプロトコルのリストについては、サポートする暗号とプロトコルを参照してください。オリジンが SSL/TLS 交換でこれらの暗号またはプロトコルに応答しない場合、CloudFront は接続を確立できません。SSL ラボを使って、オリジンが暗号とプロトコルをサポートすることを確認できます:

  • SSL ラボ

    [Host Name]フィールドでオリジンのドメイン名を入力し、[Submit]を選択します。テスト結果の [Common names] フィールドと [Alternative names] フィールドを見て、オリジンのドメイン名と一致しているかどうかを確認します。

    テスト完了後、テスト結果のプロトコルまたは暗号スイートセクションでオリジンがサポートする暗号とプロトコルを確認してください。それらをサポートする暗号とプロトコルのリストと比較します。

注記

Elastic Load Balancing を使用している場合は、「Elastic Load Balancing での SSL のセキュリティポリシー」 (Elastic Load Balancing ユーザーガイド) を参照して、暗号やプロトコルの設定方法を確認してください。事前定義されたセキュリティポリシー、ELBSecurityPolicy-2016-08を使い、CloudFront で Elastic Load Balancing にアクセスできます。カスタムポリシーを使用して制限をかけるには、CloudFront がその暗号化をサポートするようにしてください。

オリジンの 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 範囲がブロックされていないかを確認します。詳細については、アマゾン ウェブ サービス全般のリファレンス の「AWS IP アドレスの範囲」を参照してください。ウェブサーバーがオリジンで稼働中であるかどうかも確認してください。