Classic Load Balancer 経由でのリクエスト時に HTTP 502 エラーが発生します。これらのエラーをトラブルシューティングするにはどうすればよいですか?

最終更新日: 2022 年 4 月 8 日

クライアントが Classic Load Balancer (CLB) 経由でウェブサイトにリクエストを送信すると、HTTP 502 エラーが表示されます。どうすれば解決できますか。

簡単な説明

HTTP 502 (不正なゲートウェイ) エラーは、次のいずれかの理由で発生する可能性があります。

  • EC2 インスタンスで実行されているウェブサーバーまたは関連するバックエンドアプリケーションサーバーから、Classic Load Balancer で解析できないメッセージが返されている。
  • ウェブサーバーまたは関連するバックエンドアプリケーションサーバーが、独自の 502 エラーメッセージを返している。

これらの 502 エラーの原因を調べるには、次の手順を実行します。

バックエンドレスポンスが ELB 502 エラーの原因である場合、問題の原因は次のとおりです。

  • レスポンスが、各ヘッダー間に複数の CRLF を含んでいる。
  • レスポンスに、非整数を含む Content-Length ヘッダーが含まれている。
  • レスポンスで、Content-Length ヘッダー値よりも多くのバイトが本文に含まれている。

バックエンドサーバーによって 502 エラーが生成された場合は、アプリケーションの所有者に問い合わせてください。Classic Load Balancer によって 502 エラーが生成された場合、バックエンドからの HTTP レスポンスの形式が正しくありません。ELB が生成する 502 エラーのトラブルシューティングを行うには、次の手順に従います。

解決方法

1.    バックエンドアプリケーションから返されたレスポンス本文が、次の RFC に記載されている HTTP 仕様に準拠しているかどうかを確認します。
RFC 7230 - HTTP/1.1: メッセージ構文とルーティング
RFC 7231 - HTTP/1.1: セマンティクスとコンテンツ
RFC 7232 - HTTP/1.1: 条件付きリクエスト
RFC 7233 - HTTP/1.1: 範囲リクエスト
RFC 7234 - HTTP/1.1: キャッシュ
RFC 7235 - HTTP/1.1: 認証

2.    レスポンスヘッダーの構文が正しいことを確認します。Content-Type:text などのキーと値です。HTTP レスポンスヘッダーで Content-Length または転送エンコーディングが欠落していないことを確認します。ウェブサーバーの HTTP ヘッダーフィールドの詳細については、「HTTP ヘッダーフィールドのリスト」を参照してください。次のようなコマンドを実行して、返された HTTP レスポンスを調べます。

curl -vko /dev/null server_instance_IP

3.    ELB アクセスログで HTTP 502 の重複エラーがないか確認します。elb_status_code と backend_status_code の両方での 502 エラーは、1 つ以上のウェブサーバーインスタンスに問題があることを示しています。問題が発生しているウェブサーバーインスタンスを特定し、バックエンドウェブサーバーインスタンスのウェブサーバーログを確認します。一般的なウェブサーバーとオペレーティングシステムについては、次のログの場所を参照してください。

Apache ログ

  • CentOS、RHEL、Fedora、および Amazon Linux のウェブサーバーログは、/var/log/httpd/ ディレクトリにあります。
  • Debian および Ubuntu Linux 用のウェブサーバのログは、/var/log/apache2 および /var/log/lighthttpd/ ディレクトリにあります。

NGINX ログ

  • NGINX アクセスログの場所は nginx.conf ファイル (access_log /path/to/access.log) で定義されています。
  • デフォルトの場所は /var/log/nginx/access.log です。

IIS ログ

Windows IIS 7、IIS 7.5、および IIS 8.0 のウェブサーバーログは、inetpub\ logs\ Logfiles ディレクトリに保存されます。インターネットインフォメーションサーバー (IIS) のログの詳細については、「IIS 7.0 以降のバージョンの HTTP 状態コード」を参照してください。502 エラーが ELB で生成されたものであり、バックエンドのレスポンスが RFC 規約に準拠していることを確認した場合は、 AWS サポートにお問い合わせください。