🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

ロードバランサー

ロードバランサー【負荷分散装置】は、複数のサーバへアクセス要求を分散する装置です。 要求を分散することで各サーバが快適な応答速度を保つことを目的としており、 アクセスの多い大規模サイト等は、この装置により 複数のサーバに負荷を分散する事で安定な運用が可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

4576閲覧

SSL化しようとしたが接続しようとすると「502 Bad Gateway」となる

Chiaki1111

総合スコア15

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

ロードバランサー

ロードバランサー【負荷分散装置】は、複数のサーバへアクセス要求を分散する装置です。 要求を分散することで各サーバが快適な応答速度を保つことを目的としており、 アクセスの多い大規模サイト等は、この装置により 複数のサーバに負荷を分散する事で安定な運用が可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/02/16 12:55

SSL化しようと、以下のサイトにならってAWSで証明書をリクエストし、SSL化しようとしましたが、https://www.サイト名を入力しても「502 Bad Gateway」とエラーが起きてしまいました。
https://qiita.com/nakanishi03/items/3a514026acc7abe25977

どこの接続で問題が発生しているかわからず、ご教示いただきたいです。

ロードバランサー
イメージ説明

リスナー
イメージ説明

nginx.conf
イメージ説明

インバウンドルール
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

恐らく、ヘルスチェックがそもそも失敗している可能性が高いでしょう。
ヘルスチェックはデフォルトだと80番ポートに送られます。
しかしnginxには80番ポートの設定がありません。
見たところubuntuで動かしている(そのへんも記載してほしいのですが…)ようですが、ubuntuでnginxを入れたときのnginx.confのデフォルトではconf.dなどをincludeしているはずです。
それらも全部消してしまっているので記載した以外の設定は適用されていないでしょう。
消してしまうのが必ずしも問題なわけではないですが、少なくとも記載の設定ではうまくいかないと思われます。

また、ALBを使用しているならnginxにリダイレクトさせずALBのリスナー設定でリダイレクトさせるとサーバ側では単に80番ポートをlistenする設定だけ持っていればいいのでシンプルです。
[新機能]Webサーバでの実装不要!ALBだけでリダイレクト出来るようになりました!

502とは関係ないでしょうがホームディレクトリにアプリを置いているので権限周りも心配です。
ホームディレクトリは極力自ユーザのみが参照できるべきで、デフォルトではそのようになっています。
変に権限をいじるとsshできなくなったりします(詳細は割愛)
一般的には/var/wwwあたりに適当なディレクトリを作って配置するケースが多いと思うのでご参考までに。

あと、下記の情報が必要です。

  • ターゲットグループの設定

ヘルスチェックをどのポートにどのように送っているか、そしてどのレスポンスをOKとしているかを確認するため
EC2インスタンスへのヘルスチェックが成功しているかも合わせて確認

  • 記載のセキュリティグループはALB、EC2インスタンスどちらに設定されたものか

両方同じものを設定しているならその旨ご記載ください
もし別のものを設定しているならどちらがどちらかわかるようにして両方貼ってください
500番台のエラーが出てるのでリクエストが到達していないわけではないでしょうけど。

投稿2021/02/16 15:43

編集2021/02/16 15:44
yu_1985

総合スコア7588

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chiaki1111

2021/02/16 16:08

色々教えてくださりありがとうございます。特にディレクトリのところは変えておこうと思います。 ちなみに、問題に関しては、Nginx.confの設定をlisten 80に直したのと、ロードバランサーのルーティングプロトコルを80,ヘルスチェックも80に直したところhttpsで表示できるようになりました。 ありがとうございます。
guest

0

正直、その情報だけではたぶん誰も分からないとおもうのですが、まずは切り分け作業からじゃないでしょうか。一番分かりやすい切り分け方法としては、その502がロードバランサーで返されているのか、WEBサーバ(nginx)で返されているのか、どちらなのかを見極めることです。

nginxのログに502があるのであれば問題なのはWEBサーバ側でしょうから、DocumentRootが正しいかなどを確認する必要があります。ロードバランサーで502を返しているのであれば、セキュリティグループの設定やロードバランサーのインバウンドルールの設定などが何かしら間違っているのではないかと思います。

色々な要素があるので、まずは一つずつ切り分けを行って、問題の範囲を絞っていくことがこの手のトラブルの原因解決に繋がると思います。


とここまで書いてひとつ気付いてしまったのですが、nginx.confのポート443番の設定は不要で、ポート80番の設定を記入しないとダメだった気がします。ロードバランサーからは80番ポートへアクセスが来ているはずです。まずはnginxのログを確認してみてください。これが原因じゃない可能性もありますが。

投稿2021/02/16 13:41

編集2021/02/16 13:47
AbeTakashi

総合スコア4853

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問