ゴール
本番環境で使っているドメインは使用できないので、テスト用のサブドメインを作成して、
- https://{サブドメイン}でrailsの画面が表示できるようにする
- http://{サブドメイン}でリクエストしたら、https://{サブドメイン}にリダイレクトされるようにする
関連する記事
1. webページをデプロイするために、EC2インスタンスを起動する
2. Ruby on Railsの環境構築をする
3. pumaで起動してipアドレス指定でhttp通信ができるようにする
4. https://{サブドメイン}でrailsを表示できるようにする
ざっくり構成
Certificate Manager
で証明書を発行。
EC2のロードバランサー
でhttpsリクエストをEC2インスタンス
にhttp通信でリダイレクトする。
構築手順
Certificate Manager
Certificate Manager
で証明書をリクエスト
- パブリック証明書を発行
- ドメイン名:設定するサブドメイン(今回はtest.domein_name)
- 検証方法:DNS
- キーアルゴリズム:RSA 2048
Xドメイン
でサブドメインのDNSレコード設定
- ホスト名:証明書リクエストで作成された
CNAME名
- 種別:CNAME
- 内容:証明書リクエストで作成された
CNAME値
- TTL:今回はテストなので
60
EC2のロードバランサー
ターゲットグループの作成
- ターゲットタイプ:インスタンス
- ターゲット名:任意の値
- プロトコル/ポート:http/80(今回はhttp通信でインスタンスに接続する想定のため)
- VPC:インスタンスに紐づくVPCを選択
- ヘルスチェック:http
ロードバランサーの作成
- タイプ:Application Load Balancer
- ロードバランサー名:任意の値
- スキーム:インターネット向け
- VPC:インスタンスに紐づくVPC
- セキュリティグループ:インバウンドルールでhttpsとhttpを許可したセキュリティグループを紐づけ
- リスナーとルーティング
- https
- 443
- デフォルトアクション:作成したターゲットグループを選択
- セキュアリスナーの設定
- 証明書の取得先:ACMから
- 証明書:ACMで作成された証明書を選択
ドメイン先(Xドメイン)のDNSレコード設定
サブドメインのELBへの接続を設定する
- ホスト名:test
- 種別:CNAME
- 内容:作成したELBの
DNS 名
- TTL:今回はテストなので
60
EC2の設定
セキュリティグループのインバウンドルールを編集
- httpのソースを作成したELBにする
nginxの設定を変える
rails_app.confのリダイレクトするときの受け取りのリクエストをhttp://ip_address
からhttp://domain_name
に変える
/etc/nginx/conf.d/rails_app.conf
server {
listen 80;
server_name test.domain_name;
# ↑ここをサブドメインに変える
location / {
proxy_pass http://127.0.0.1:3000;
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-Proto $scheme;
}
}
これらの設定で、https://{subdomain}のリクエストでrailsの画面が表示できるようになった
httpリクエストをhttpsにリダイレクトさせる方法
ロードバランサーのリスナーとルールを追加する
- Protocol:http
- Port:80
- デフォルトアクション
- URLにリダイレクト
- プロトコル:https
- ポート:443
- ステータスコード:301
この設定で、httpのリクエストでhttpsのリクエストに、リダイレクトされるようになった
途中のエラー時の調査に使ったコマンドたち
# railsのログ
tail -f /var/www/ocha_app_dir/ocha_app/log/production.log
# pumaのエラーログ直近100件
journalctl -u puma --no-pager --lines=100
# nginxのエラーログ
tail -f /var/log/nginx/error.log
# railsの環境変数とかもろもろ設定する場所
/etc/systemd/system/puma.service
※puma.serviceを編集したらdeamon-reloadする
sudo systemctl daemon-reload
sudo systemctl restart puma
sudo systemctl status puma
# nginxの設定を書いている場所
/etc/nginx/conf.d/rails_app.conf
※修正したらnginxも再起動
sudo systemctl restart nginx
sudo systemctl status nginx