HerokuでCloudFlareを使う
この記事でやること
Route 53で独自ドメインを設定したHerokuに対してCloudFlareを設定して、CDNを使いつつFull SSLで接続できるようにする
ここでいうFull SSLとはこのような構成をいう
前提
Route53の設定はHerokuにRoute 53をつかって独自ドメインを設定するで説明したような内容になっている
Heroku側での設定が必要
手順
CloudFlareにサインアップするとドメイン入力を求められる
CloudFlareがDNS recordを取得する
Cloudflare is querying your site’s existing DNS records (the Internet’s equivalent of a phonebook) and automatically importing them, so that you don’t have to enter them manually.
Once you activate your site on Cloudflare by changing your nameservers (in the steps to follow), traffic to your site will be routed through our intelligent global network.
プラン選択画面が出る
Free planを選択
DNS query resultsが出るので、結果がただしいかレビューする
ドメインを取得したサービス(例えばRoute 53)で設定したレコードと同一になっているか確認
HerokuにRoute 53をつかって独自ドメインを設定するでRoute 53に設定した内容がほぼそのままコピーされていた
herokuを使っている場合、CNAMEのnamewww valuefoo.herokuapp.comなどになっていればOK
最終的にこうなった
https://gyazo.com/6890cbbdc2d1e8a133e6a6805100ea16
Heroku単体だとroot domainをCNAMEに設定できない(HerokuにRoute 53をつかって独自ドメインを設定する#5c7212023f44250000f1750d)が、CloudFlareはCNAME Flatteningが使える(上図1行目)のでhttps://example.netでアクセスできるようになる
注意
CloudFrale公式のヘルプでは、target DNS(foo-bar-baz.herokudns.com)につなげと説明があるが、これではつながらなかった
HerokuにCloudflareを設定したら525エラーになった
Route 53側に余計なレコード(CNAMEなど)があったら削除しておく
CNAMEはCloudFraleのDNSで設定している。Route 53側で消さないと、Route 53側のCNAMEにアクセスしてCloudFlareにつながらなくなってしまう
Route 53のNSレコードをCloudFlareのものに差し替える
最終的にこんな感じになった
https://gyazo.com/0e296ad7ea8428c28c559728b1de6bb0
もともとあるNSレコードがSOAにもあるが、SOAのこのレコードは基本使われないみたいなので(要出典)そのままでよい
Route53でホスト以外の方の情報も変更する
https://gyazo.com/083b03f3294caf2b8c231cd4e1aa9988
手順に出ないけどやらないとCloudFlareが認識してくれない
dig @8.8.8.8 mydmain.app nsなどでネームサーバを引いたときにちゃんとcloudflareのものになっていたとしても駄目
ドメインのネームサーバを変更したら、WHOIS情報がかわった。その後1時間以内にCloudflareからドメインでのサービスの利用がアクティブになったという通知メールが来た
変更したネームサーバがキャッシュに乗るまで1-2日待つ
ネームサーバを切り替えたときにどれだけ待たなければいけないのか?
ネームサーバ移行 〜虎の巻〜 - Qiita
ルートサーバのネームサーバを調べる
サイトがmy.appだったらdig apn ns
ネームサーバに自分のドメインのNSレコードを聞く
dig @foo.gltd-servers.app. my.app ns
正常にできるとSSLでアクセスできるようになる
https://gyazo.com/45f4a18772db64475508576a8ca9b304
#Heroku