ナチュラル @rch850

ナチュラル丼発祥の地、福井からお届けします。技術的な話題とか、雑談とか。

CloudFlare で Heroku に zone apex を向ける

sokuhotel.net みたいな、zone apex だとか root domain だとか呼ばれるあれ、Heroku で使いたいときは CloudFlare を使うと無料で簡単ですね。

Heroku のドキュメント (Custom Domains | Heroku Dev Center) では、下の通りいくつかの方法が案内されている。

f:id:rch850:20141102050204p:plain

この中で一番知ってたのが CloudFlare だったので、CloudFlare で適当に設定。この場合に設定するのは

まず CloudFlare 側はこんな感じで設定。

f:id:rch850:20141102052904p:plain

zone apex の A レコードで最初から入ってる場合は、それを消してやらないと CNAME を追加できないので注意。あと、今回は特にアクセスを高速化したりしたいわけじゃないから、CloudFlare 自体の機能は切ってある(雲アイコンがグレー)。

CloudFlare で zone apex に CNAME を設定すると、設定上 CNAME となっているものの、実際の名前解決では A レコードとして解決される。これが CNAME Flattening ってやつで、zone apex を使える理由だ。zone apex に A レコードじゃなくて CNAME を設定できちゃうと色々と問題になるからね。

Heroku のほうは、zone apex を Domains に追加してやる。

f:id:rch850:20141102051845p:plain

既存のリンクが壊れちゃってもしゃーないから www を残してるけど、最初から使う気が無ければ設定しなくてもいいと思う。

最後にドメインレジストラ側の設定で、NS レコードを CloudFlare に向ける。VALUE DOMAIN だとこんな感じ。

f:id:rch850:20141102052058p:plain

この3つの設定が終われば、そのうち zone apex でサイトにアクセスできるようになる。