Why?
色々とやろうとするにはドメイン設定しないととなったのでそこら辺の備忘録です。
この記事の作者のアプリの状態
アプリはRuby on railsで作成し、デプロイ先はHeroku使用
ドメインの取得
ドメインはお名前ドットコムで取得しました。
されど私はルートドメインとして設定したいと思ってしまったのですね。
しかし、お名前ドットコムではルートドメインが適応できなかったのです。
なのでCloudflareを使うことになりました。
Cloudflare
ルートドメインを設定するために活用したのがこちらのサービス。
Cloudflare CDNの仕組み
ドメイン適応のやり方
1. cloudflareにログイン
2. ドメインを追加
アカウントホームのドメインを追加ボタン
↓
既存のドメインを入力
↓
続行
この時私はDNS レコードのクイック スキャン(推奨)
を選択していたけど、レコードが必要以上に入っちゃうからDNS レコードを手動で入力する
でもいいかも
3. ネームサーバー設定
Cloudflareからネームサーバーを提供される (2つある)
↓
お名前ドットコムのネームサーバー設定
↓
その他のネームサーバーを利用
↓
Cloudflareのネームサーバーを登録 (2つとも)
4. Herokuにドメインを追加
heroku domains:add ドメイン名 -a アプリ名
このコマンドを入力するとHerokuからCNAMEレコードの値(xxxxx.herokudns.com
のようなもの)が返ってくるのでこれを控えておく。
確認する際は以下で。
heroku domains -a アプリ名
Herokuのweb上でもアプリのSettingsからでも一応確認可
5. CloudflareにDNSを登録
CloudflareのダッシュボードからDNSのレコード
↓
下記の様に設定
《 ルートドメイン 》
- タイプ:CNAME
- 名前:@
- ターゲット:Herokuから取得した値(
xxxxx.herokudns.com
) - プロキシステータス:灰色の雲(HerokuのSSLの設定が競合しないようにしておく)
《 サブドメイン 》
- タイプ:CNAME
- 名前:www(任意)
- ターゲット:Herokuから取得した値(
xxxxx.herokudns.com
) - プロキシステータス:灰色の雲(HerokuのSSLの設定が競合しないようにしておく)
5. CloudflareのSSL/TLS設定
CloudflareのダッシュボードからSSL/TLSのSSL/TLS暗号化
↓
フルorフル(厳密)に設定
- フレキシブルは Herokuと相性が悪いらしいので、必ずフル以上を選ぶ
- フル(厳密)にする場合は、Heroku側でSSL証明書が有効になっていることを確認
6. HerokuのSSLを有効化
heroku certs:auto -a アプリ名
これで無効だったら有効に変更
heroku certs:auto:enable -a アプリ名
7. 設定できたか確認
nslookup ドメイン名
これでHerokuで取得したターゲットと一緒であればOK
ルートドメインはCloudflare の IP アドレスが返ってきたりするけど大丈夫でした
自動証明書関係はこちらでドメインごとのステータスを確認しとくと安心
heroku certs:auto -a アプリ名
Cert issuedか出ていなかったら以下のリンク先で確認する
Heroku 自動証明書管理
以上です。
一応実装しながら記載していったので確認済みではありますが
何かおかしなとことかありましたら、コメントいただけますと幸いです。