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の作成をクリック
以下の画面になります。
・名前は何でもいいです。好きな名前を付けてください!
・スキームとIPアドレスタイプはデフォルトのままで構いません。
・リスナーのプロトコルにHTTPSの追加をしましょう。(HTTPをHTTPSに変更でも良いですが、そうするとHTTPからアクセスできなくなります。)
画面下に行くと、以下になります。
・VPCはデフォルトで、アベイラビリティーゾーンは最低2つ選びましょう。
次はセキュリティの構成です。
先ほど発行した証明書を選びます。
次はセキュリティグループの設定です。
・私は新規作成してインバウンドグループを以下のようにしました。
次にターゲットグループの作成です。
・ここでポイントです。
ターゲットグループのプロトコルはHTTPにしましょう。
HTTPS対応の色んな記事をみましたが、どこもHTTPSにするように記載されていました。
そのせいなのか、503エラーが発生し、かなりの時間を溶かしてしまいました。。。
理由は、EC2とロードバランサー間の通信はHTTPで行うためのようです。
・名前は任意で大丈夫です。
・ヘルスチェックもデフォルトのままで問題ないと思います。
次にターゲットの登録を行います。
・下のインスタンスに紐付けをします。関連付けるインスタンスにチェックして登録済に追加します。
最後は確認して、ロードバランサー(ALB)の作成完了です。
##Route53に登録
Route53にて、ロードバランサーのアドレスを登録します。
エイリアスの選択で「はい」を選ぶと、エイリアス先に先ほど作成したロードバランサーが選べると思います。
ここで、確認でRoute53のアドレスを叩くと、おそらくnginxの画面が出ると思います。
nginxを調整が必要です。
##nginxの調整
・nginxのserver_nameにRoute53のドメインが必要です!
.
.
server {
listen 80;
server_name 11.111.111.11 111111111111.com;
.
.
これで再度、httpsで対応できているか確認しましょう。
以上