1
2

More than 3 years have passed since last update.

HTTPS対応503にハマった

Last updated at Posted at 2020-06-13

Railsのwebアプリをhttps対応する時に、503のエラーで鬼ハマったので、、、記事にまとめてみました。
参考にしてください。

基本以下の記事を参考にしております。
https://oji-cloud.net/2019/09/15/post-3017/

段取り

AWSのロードバランサー(ALB)を使いました!

ルートは以下となります。

①EC2 → ②ロードバランサー(ALB) → ③Route53 → ④クライアント

②のところで、HTTPSにします!

環境

Rails5
unicorn
nginx
capistrano

AWS

EC2
ロードバランサー(ALB)
ACM
Route53

前提

EC2にデプロイ完了済とします。
デプロイでnginxを使っています。
route53に登録済とします。

やり方

ACMの登録

ACMを利用して、SSlの証明書を発行します。

こちらは以下の記事を参考にしてください!
https://oji-cloud.net/2019/09/15/post-3017/

ロードバランサー(ALB)の作成

まずは、EC2にあるロードバランサーの作成をクリック
すると以下の画面になるので、ALBの作成をクリック

2019-09-15_21h21_08-1024x488.png

以下の画面になります。
・名前は何でもいいです。好きな名前を付けてください!
・スキームとIPアドレスタイプはデフォルトのままで構いません。
・リスナーのプロトコルにHTTPSの追加をしましょう。(HTTPをHTTPSに変更でも良いですが、そうするとHTTPからアクセスできなくなります。)
スクリーンショット 2020-06-13 14.05.59.png

画面下に行くと、以下になります。
・VPCはデフォルトで、アベイラビリティーゾーンは最低2つ選びましょう。
スクリーンショット 2020-06-13 14.10.58.png

次はセキュリティの構成です。
先ほど発行した証明書を選びます。
2019-09-15_21h27_51-1024x488.png

次はセキュリティグループの設定です。
・私は新規作成してインバウンドグループを以下のようにしました。
スクリーンショット 2020-06-13 14.26.00.png

次にターゲットグループの作成です。

・ここでポイントです。
ターゲットグループのプロトコルはHTTPにしましょう。
HTTPS対応の色んな記事をみましたが、どこもHTTPSにするように記載されていました。
そのせいなのか、503エラーが発生し、かなりの時間を溶かしてしまいました。。。
理由は、EC2とロードバランサー間の通信はHTTPで行うためのようです。

スクリーンショット 2020-06-13 14.27.58.png

・名前は任意で大丈夫です。
・ヘルスチェックもデフォルトのままで問題ないと思います。

次にターゲットの登録を行います。
・下のインスタンスに紐付けをします。関連付けるインスタンスにチェックして登録済に追加します。

スクリーンショット 2020-06-13 14.36.25.png

最後は確認して、ロードバランサー(ALB)の作成完了です。

Route53に登録

Route53にて、ロードバランサーのアドレスを登録します。
エイリアスの選択で「はい」を選ぶと、エイリアス先に先ほど作成したロードバランサーが選べると思います。
スクリーンショット 2020-06-13 14.52.36.png

ここで、確認でRoute53のアドレスを叩くと、おそらくnginxの画面が出ると思います。https___qiita-image-store.s3.amazonaws.com_0_8790_193fbecc-fde2-9a2d-368e-5afab81da5b3.png

nginxを調整が必要です。

nginxの調整

・nginxのserver_nameにRoute53のドメインが必要です!

/etc/nginx/conf.d/rails.conf
.
.
server {
  listen 80;
  server_name 11.111.111.11 111111111111.com;
.
.

これで再度、httpsで対応できているか確認しましょう。

以上

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2