HerokuでCloudFlareを使う
この記事でやること
Route 53で独自ドメインを設定したHerokuに対してCloudFlareを設定して、CDNを使いつつFull SSLで接続できるようにする 前提
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を使っている場合、CNAMEのnamewww valuefoo.herokuapp.comなどになっていればOK
最終的にこうなった
https://gyazo.com/6890cbbdc2d1e8a133e6a6805100ea16
注意
CloudFrale公式のヘルプでは、target DNS(foo-bar-baz.herokudns.com)につなげと説明があるが、これではつながらなかった 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日待つ
ネームサーバを切り替えたときにどれだけ待たなければいけないのか?
ルートサーバのネームサーバを調べる
サイトがmy.appだったらdig apn ns
ネームサーバに自分のドメインのNSレコードを聞く
dig @foo.gltd-servers.app. my.app ns
正常にできるとSSLでアクセスできるようになる
https://gyazo.com/45f4a18772db64475508576a8ca9b304