Herokuで独自ドメインの設定
Herokuにホスティングしているアプリに独自ドメイン設定したい
NuxtでWebサイトを作ったのですが、Herokuが楽でいいな、と思い、Herokuに設置。独自ドメインの設定はCNAMEで設定すればOKのようです。
(Nuxtのデプロイ手順は今度暇な時に書きます)
コマンド
ワンライナーでアプリとドメインの設定を確認できます
ドメインの設定
$ heroku domains:add www.yourdomain.jp -a yourapp-name
もし、指定したドメインが別のアプリで使われていた場合は ドメインの設定を解除する必要があります。
アプリとDNSの設定をワンライナーで確認する
# herokuのアプリ一覧で表示
$ heroku apps > heroku_apps_list; for i in `cat heroku_apps_list`; do heroku domains --app $i ; done
ドメインとアプリの関連付けを削除
$ heroku domains:remove yourdomain.jp -a yourapp-name
その後、もう一度自分の設定したいドメインとアプリで domains:addを実行してあげます。
DNS設定
CNAMEに設定すべきHeroku Domainを確認する
heroku domains -a yourapp-name
=== yourapp-name Heroku Domain
yourapp-name.herokuapp.com
=== yourapp-name Custom Domains
Domain Name DNS Record Type DNS Target
──────────────────── ─────────────── ──────────────────────────────────
www.yourdomain.jp CNAME www.yourdomain.jp.herokudns.com
DNSの設定(私はお名前.comでしたが)は以下のようになります。VALUEにはherokuドメインが来るように設定します。
TYPE: CNAME
VALUE: yourapp-name.herokuapp.com
優先: (空欄)
状態: 有効
しばらくして指定したドメインでアクセスできるようになれば完了です。うまくいかないと感じたら、hostコマンドを叩いて設定されているか確認します
成功していれば次のように返ってきます
$ host yourdomain.jp
www.yourdomain.jp is an alias for yourapp-name.herokuapp.com.
us-east-1-a.route.herokuapp.com has address 54.236.166.251
us-east-1-a.route.herokuapp.com has address 52.5.226.222
us-east-1-a.route.herokuapp.com has address 52.72.224.148
us-east-1-a.route.herokuapp.com has address 52.6.103.192
us-east-1-a.route.herokuapp.com has address 52.7.153.92
us-east-1-a.route.herokuapp.com has address 52.6.165.91
us-east-1-a.route.herokuapp.com has address 52.71.195.70
us-east-1-a.route.herokuapp.com has address 52.72.5.0
wwwなしのレコード設定がCNAMEでできない
できませんね。。
なので、先頭にアスタリスクを設定してwwwなしでもアクセスできるようにしました。
TYPE: CNAME
VALUE: yourapp-name.herokuapp.jp
優先: (空欄)
状態: 有効
DNS Record Type DNS Targetでうまくいかなかった
CNAMEのvalueには
DNS Record Type DNS Targetに表示される
こちらを表記するらしいのですが、
うまくいかなかったので(というか、このDNSでアクセスすることがそもそもできない)
古いやり方だと思われるheroku domain nameをCNAMEに設定するとうまく表示された。
SSLの問題かなあ。。SSL化しなくちゃいけないから、後でこの問題はまた考えよう