herokuでwww無しのネイキッドドメインを使う
いろんな有名技術者のサイトを見たら自分もプロフィールページを作ってみたくなった。タリンで撮った飛行機雲の写真を背景に、文字は明瞭で読みやすいMerriweather Sansを。ぼんやりとデザインを決め、Sinatra+Compass+hamlで作ってリンクをおいて、はい完成。当初はAWSのEC2を使う気でいたんだけど、一番安いmicroインスタンスでも月に1000円くらいはするらしいので結局いつものHerokuにした。デプロイしたまではよかったんだけど…
herokuは現在Aレコード用のIPアドレスを公開していない。 昔は3つのIPを公開していたのでいまでも検索すれば出てくるが、新たにAレコードとして設定してもHerokuがエラーを吐いてしまうので使えない。
herokuではCNAMEレコードを***.herokuapp.comに設定することを求めている。可用性の観点から言えばherokuの言い分は正しいんだけど。 ではネイキッドドメインをCNAMEで設定できるのかというと、これが不可能なのだ。「www」など付加したサブドメインしか使えないということである。 でも正直www有りのアドレスって何となくダサくて使いたくない。 RFC1034 section 3.6.2を厳守しているかぎり、CNAMEをルートドメインに設定できないらしい。
herokuではネイキッドドメインをCNAMEに設定できるサービスとしてDNSimpleを紹介しているが、これは一番安いプランでも月に3ドルかかる。 ただのプロフィールサイトに金払うのもなぁ、と思ってパス。 有名なDNSサービスとしてAmazonのRoute53があるが、これもCNAMEをルートドメインに設定できない。 herokuのアドオンで提供されているzerigoDNSも不可。国内のGehirnDNSでも不可。
困ってたらこのページで解決策を提示していた。
無料のCDNとして有名なCloudflareっていうサービスだ。単純にwwwなしのアドレスをCNAMEに指定できる。なんの問題もなく、また公式で認めている使い方なので安心していいだろう。このような使い方があるとは知らなかった。
料金もSSLを使わなければ無料だし、CDNとしても大変優秀なので同様の問題で悩んでいる人に是非お勧めする。
nic.shでネームサーバーを設定してしばらく待つと、xar.shでアクセスできるようになっていた。 www.xar.shをxar.shにリダイレクトするようにし、この日記もxar.shで運用するように設定した。
ドメインも整理できたのでよかった。
参考:http://superuser.com/questions/264913/cant-set-example-com-as-a-cname-record