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