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

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

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTTPS

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

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

Q&A

解決済

3回答

1188閲覧

AWS HTTPS化 出来ないのを解消したい

a-ichi

総合スコア16

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTTPS

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

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

0グッド

0クリップ

投稿2021/01/07 09:42

編集2021/01/08 12:04

前提・実現したいこと

https化したサイトをドメイン名でアクセスできるようにしたい。
ドメインは.comを取得しました。

発生している問題・エラーメッセージ

httpsでアクセスしようとすると
「このサイトにアクセス出来ません」のエラー

httpでアクセスしようとすると
「[504] Gateway Timeout」のエラー

Elastic IP アドレスでのアクセスは問題なくできます。

該当のソースコード

試したこと

下記、サイトを参考に試しました。
ターゲットグループのポートを80にしたら解決したと記載があったので、
80にしたつもりですが、出来ていないのでしょうか?

参考にしたサイト

https://qiita.com/nakanishi03/items/3a514026acc7abe25977
https://qiita.com/iwaseasahi/items/1687426add4124899fe3
https://teratail.com/questions/310707


資料が多く見辛いと思いますが、
何卒よろしくお願い致します。

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

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

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

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

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

yu_1985

2021/01/07 11:27 編集

ALBのセキュリティグループの設定を貼ってください。 あと、ヘルスチェックが失敗していたらどのみちダメなので、サーバ内でアクセスログを確認してください。
a-ichi

2021/01/07 12:07

yu_1985様 コメントありがとうございます。 セキュリティグループを貼りました。 ご確認お願い致します。
guest

回答3

0

ベストアンサー

問題が2つ発生しています

  1. ALBでHTTPのリスナー設定をしていない

HTTPSでの「アクセスできません」がどのエラーかわからない(恐らく配下にインスタンスがないから)のでそちらはなんとも言えませんが、HTTPについてはリスナー設定をしていない(ように見える)のでHTTPでアクセスしたときのエラーの原因は恐らくそれです。
この辺はもう少し正確な情報が見たので、エラーの文言を抜粋してコピペするだけではなくてスクリーンショットを貼っていただいたほうが確実です。
HTTP 504: Gateway timeout

  1. ALB配下のEC2インスタンスに対するヘルスチェックがエラーになっている

見ての通り、ヘルスチェックに失敗しています。
ヘルスチェックに失敗している原因はここからだけでは特定できないので、サーバに入ってアクセスログとエラーログを確認してください。
あと、Group Detailsのタブでヘルスチェックの設定が見られるはずなので、そちらも貼ってください。

ターゲットグループについてはデフォルトが443ポートですが、インスタンスに個別に80番ポートを設定しているので恐らく80番ポートで通信されてると思いますが、こちらもアクセスログできちんと確認してください、。
また、ロードバランサとターゲットグループに設定するそれぞれのポートが何に当たるかについては下記の記事が参考になります。
Application Load Balancerで設定する4種類のポート番号の意味を理解しよう

投稿2021/01/07 13:30

yu_1985

総合スコア7588

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

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

a-ichi

2021/01/07 14:30

yu_1985様 ご回答ありがとうございます。 1、仰るとおり、リスナーでHTTPの設定をしておりませんでした。 リダイレクト先の入力が求められますが、何を選択すればよろしいでしょうか? エラー文言アップ致しました。ご確認お願い致します。 2、ヘルスチェックの設定アップ致しました。ご確認お願い致します。 3、初歩的な事ばかりお聞きして申し訳ありません。 アクセスログはどのように確認すれば良いでしょうか? ALBの記事ありがとうございます。勉強致します!
yu_1985

2021/01/07 14:36

1. とりあえずこれを読んでください。 https://dev.classmethod.jp/articles/alb-redirects/ 2. やっぱりヘルスチェックの設定に問題がありますね。 ヘルスチェックをHTTPSで送っているせいで失敗しています。 ターゲットグループを修正してもいいですけど、ターゲットグループのデフォルトがHTTPSになってしまっていてそれを個別の設定で上書きするような設定になってるので、ちゃんと作り直すべきだと思います。 3. WEBサーバの構成がわからないので答えようがありません。 恐らくnginxを使っているんじゃないかと思いますけど。 大抵のログはサーバ上の/var/log配下にあるのでそこを探してください。 Railsのログについてはデフォルトならプロジェクトのlogディレクトリにあるのでそこを見てください。 いずれもサーバの中に入って見る必要があります。(外から見ることができるようにもできますが、話がややこしくなるので割愛します。)
a-ichi

2021/01/07 14:49

yu_1985様 ご回答ありがとうございます。 分かりやすい記事もありがとうございます。 一旦、ターゲットグループ作りなおそうと思います。 教えて頂いた記事と、ログを見て頑張ります! ご丁寧に教えて頂きありがとうございました。
guest

0

ALB から EC2インスタンスへのヘルスチェックに失敗して、"unhealthy" になっています。
EC2インスタンスのセキュリティグループ(sg-0...2c9 ですよね?)を見ると、80 番ポートはありますが、443 番ポートはありませんので、ALB → EC2 は Protocol=HTTP, Port=80 で通信したいのですよね?
であれば、ターゲットグループをそのように設定するといいと思います。

ターゲットグループのポートを80にしたら解決したと記載があったので、
80にしたつもりですが、出来ていないのでしょうか?

Protocol を HTTPS から HTTP に変更しましたか?

投稿2021/01/07 11:33

TaichiYanagiya

総合スコア12173

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

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

a-ichi

2021/01/07 12:25

TaichiYanagiya様 回答ありがとうございます。 申し訳ありません。 インバウンドルールが載せれていませんでした。 ポート範囲433で二つルールを設定しております。 protocolをHTTPに変更してみましたが、改善されませんでした。
guest

0

HTTPS SSLでのアクセスには、PORT:443の開放が必要です。
また、SSL証明書も必要となります。

Python/DjangoのWEBサイトですが、EC2の利用という点では同じですので、以下ご参考までに。
【Nginx】Let’sEncryptからのSSL証明書がcertbot-autoで取得できない際の対処

投稿2021/01/07 10:37

編集2021/01/07 10:38
_whitecat_22

総合スコア1305

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

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

yu_1985

2021/01/07 11:24 編集

この質問はALBを使っているケースなので、EC2単体をHTTPS化するケースとは異なります。
_whitecat_22

2021/01/07 11:29

それは失礼いたしました。 ただ、それだけで低評価にする必要はないかと思いますが、、
a-ichi

2021/01/07 12:27

whitecat_22様 回答ありがとうございます。 今回はまた違ったケースとの事でした。申し訳ありません。 またお願い致します。
_whitecat_22

2021/01/07 12:35

いえいえ、大変失礼いたしました 私も勉強になりました 今後ともよろしくお願いいたします
yu_1985

2021/01/07 13:13

その旨補足して欲しいのです。 ちなみに、EC2側でHTTPS化の設定をしてALBからのリクエストを443ポートに送ることもできなくはないですが、それによって暗号化できるのはALBとEC2の間の通信(AWSののプライベートネットワーク内の通信)ですし、せっかくACMを使うことで証明書を外出しできたのにACMと証明書が二重管理になってしまうこと、もし台数が増えた場合それぞれに証明書を配置しなければならないことなどがマイナスポイントです、。 なので、ALBからEC2への通信を暗号化しなければいけない特別な要件がない限りはあまり適切とは言えません。 にもかかわらず、サーバ側で証明書を用意させようとする記事はたくさんありますが…。
_whitecat_22

2021/01/07 22:45

yu_1985 さん、ご助言をありがとうございます。 ご教示いただいた内容を、今後に役立てます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問