web-dev-qa-db-ja.com

Elastic Load BalancerとHTTPSリクエストのEC2 / Nginxで502 Bad Gatewayエラーを解決するにはどうすればよいですか?

Nginxを実行しているEC2インスタンスの前でAWS Elastic Load Balancer(アプリケーションタイプ)を使用すると、HTTPSリクエストで「502 Bad Gateway」の問題が発生します。 Nginxは、python app(Pyramid framework)を提供するウェイトレスサーバーの各インスタンスでリバースプロキシとして機能しています。EC2インスタンスが次のようになるようにELBでTLS終了を使用しようとしていますHTTPのみを扱います。大まかな設定は次のとおりです。

クライアントHTTPSリクエスト> ELB(443でリッスン、バックエンドで80に転送)>ポート80でリッスンするNginx(Ec2インスタンス上)>ウェイトレス/ピラミッドに転送(同じec2インスタンス上)

HTTPSでリクエストを行うと、502エラーが発生します。ただし、通常のHTTPリクエストを行うと、期待どおりの応答が返されます(ELBがポート80でリッスンしていることを除いて、上記と同じ設定です)。

追加情報:ELBヘルスチェックが機能しています。すべてのVPC /セキュリティグループが正しく構成されていると思います。 AWSでの標準のセットアップ/ウォークスルーを使用して、ELBでAWS証明書を使用しています。 Ec2インスタンスにSSH接続し、NginxアクセスログでHTTPSリクエストがまだ暗号化されているように見えますか?それともエンコードの問題ですか?

It looks like this

EC2インスタンスのnginx.confは次のとおりです。

#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    access_log /etc/nginx/access.log;  
    sendfile        on;

    # Configuration containing list of application servers
    upstream app_servers {

        server 127.0.0.1:6543;
    }   

    server {
        listen       80;
        server_name  [MY-EC2-SERVER-NAME];


        # Proxy connections to the application servers
        # app_servers
        location / {

            proxy_pass         http://app_servers;
            proxy_redirect     off;
            proxy_set_header   Host $Host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;

        }
    }
}
10
Luke

わかりました(私はダミーです)。 ELBで2人のリスナーをセットアップしました。1人は80人用、もう1人は443用ですが、これは正解でした。 80のリスナーは、期待どおりHTTP経由でバックエンド(Nginx)ポート80に転送するように正しく設定されていました。 443リスナーは、HTTPS経由でバックエンドのポート80に送信するように正しく構成されていませんでした。 80リスナーと同じルールを使用するように443リスナーを更新しました(つまり、443でリッスンしますが、HTTP経由でバックエンド80に送信します)。 y'allを無視します。

12
Luke