Edited at

Herokuでルートドメインを使用する

More than 5 years have passed since last update.


ルートドメイン(Apex ドメイン)は使えない


Heroku でアプリケーションを作成すると、漏れなく newapp.herokuapp.com というドメインを使用することができます。

独自のドメインを割り当てたい場合は、heroku の設定で、Domains にドメインを登録してあげると良いです。

ただし、ここで通常使えるのはサブドメインがついているタイプのもの。

ルートドメインは(そのままでは)使用できません。

www.jobhub.jp というドメインはいいけど、jobhub.jp はダメなんです。

http://jobhub.jp ってURLで運営できないってことですね。

公式でも、ルートドメインを避けるよう解説されています。

Avoiding Naked Domains and DNS A-records


ANAME を利用してルートドメインを使う


でも、どうしてもルートドメインを使いたい!って場合にはやりようがあります。

ANAME とか Alias Record とか呼ばれる DNS のレコードを使う方法です。

heroku の公式でも言及されていますが、DNS Made Easy や DNSimple といった海外のDNSサービスがこういったレコードに対応しています。

Custom Domains | Heroku Dev Center

Introducing the ALIAS Record | DNSimple

ANAME Records | DNS Made Easy

ルートドメイン(英語圏ではNaked Domain とか Apex Domain とか呼ばれてます)って必ずAレコードを必要とするので、必ず特定のIPアドレスに結びつく必要があります。

対して ANAME や Alias Record は DNS サービス上で CNAME のように登録できるものの、実際の名前解決では IPアドレスを返してくれるんですね。

この機能を利用して、jobhub.jp ドメインを newapp.herokuapp.com のエイリアスとしてANAME(あるいはAlias Record)に登録してあげれば万事解決です。

http://jobhub.jp で無事運用できるようになりました。

ただし DNS サービスによっては、利用できるトップレベルドメインに制限があります。

現在は対応しているかもしれませんが、私が以前調査した際には、DNSimple は JP ドメインには対応しておらず、DNS Made Easy を使うしかありませんでした。


SSL でもルートドメインを使う


なお、SSL を使用したい場合でも基本的に同様の対処で対応可能です。

heroku のアドオンである SSL Endpoint を導入すると shiga-***.herokussl.com といった SSL 用のサブドメインが与えられます。

jobhub.jp ドメインを shiga-***.herokussl.com のエイリアスとしてANAME(あるいはAlias Record)に登録してあげれば良いです。

無事、https://jobhub.jp で運用できるようになります。

※ *.herokussl.com のサブドメイン部分はアプリごとにバラバラです。日本の比較的著名な市町村名が使われているようです。


この情報を得るに至った経緯(愚痴)


昔の heroku は独自ドメインを使用するためには Custom Domain という無料のアドオンを使う必要がありました。

このアドオンは 非 SSL であればルートドメインに対応していて、「このIPアドレスをDNSのAレコードに設定してね」と三つほどIPアドレスの情報が公開されていて、↑のようなANAME 対応の DNS サービスなどは特に必要ありませんでした。

SSL を必要とする場合は、IP Based SSL という月100ドルのアドオンが用意されていました。

導入するとこのアドオン用に用意されている IP アドレスが割り当てられるので、これを DNS の Aレコードに設定する、という手順を踏めば追加料金が発生するものの、やはり ANAME などは必要ありませんでした。

サービスのローンチ前にこのような情報を確認できていたため、heroku + SSL でも普通にルートドメイン使えるね、とすっかり安心していたんですよね。


と・こ・ろ・が。

ローンチ直前くらいのタイミングで、いきなり IP Based SSL が使用不可になったんですよ。もう内外にURLとか告知してるのに。プレスリリースとかも出てるのに。

SSL を使用しない選択はなかったので、これには慌てました。

最悪の場合は www.jobhub.jp みたいにサブドメイン付きで運用することにして、jobhub.jp はさくら VPS あたりでリダイレクトサーバでも建ててしのぐしかないかな、と考えたりもしていました。

ルートドメインでの運営が気に行っていただけに、心理的にもショックが結構大きかったです。

こんな状況だったので、正直いきなりアドオン使えなくなるとか勘弁してくれって感じでしたが、藁をもつかむ思いで heroku のサポートに聞いてみたんですね。

そしたら DNSimple や DNS Made Easy のことを教えてくれて、今に至る、と。

当時はこれらの情報はまだ Dev Center には書かれていなかったので、聞かないと分からなかったですね。

おかげで助かった訳で恩を感じるものの、窮地に陥ったのもお前のせいじゃ、と感じたりもして少々複雑です。

※ 実際には AWS の Route53 でも行けるよ、と言われましたがこれは無理でした。EC2用に用意されているDNSサービスなのと、JPドメインには対応していないのと。


heroku で動いているらしい HandMade In Japan Fes 2013 というサイトもルートドメインですね。dig って見たところ Dozens というサービスを使っているようです。

確認していませんが、ANAME のようなレコードが用意されているのかもしれません。