0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

4. https://{サブドメイン}でrailsを表示できるようにする

Last updated at Posted at 2025-03-06

ゴール

本番環境で使っているドメインは使用できないので、テスト用のサブドメインを作成して、

  1. https://{サブドメイン}でrailsの画面が表示できるようにする
  2. http://{サブドメイン}でリクエストしたら、https://{サブドメイン}にリダイレクトされるようにする

関連する記事

1. webページをデプロイするために、EC2インスタンスを起動する
2. Ruby on Railsの環境構築をする
3. pumaで起動してipアドレス指定でhttp通信ができるようにする
4. https://{サブドメイン}でrailsを表示できるようにする

ざっくり構成

Certificate Managerで証明書を発行。
EC2のロードバランサーでhttpsリクエストをEC2インスタンスにhttp通信でリダイレクトする。
image.png

構築手順

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
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?