Herokuアプリにカスタムドメインを既に追加しており、www.domain.com
で動作します。
アプリを解決するために、www
なしでドメインを設定する方法を知る必要もあります。
現在のDNS設定は次のとおりです。
$TTL 86400
@ IN SOA ns1.first-ns.de. postmaster.robot.first-ns.de. (
2013041500 ; serial
14400 ; refresh
1800 ; retry
604800 ; expire
86400 ) ; minimum
@ IN NS robotns3.second-ns.com.
@ IN NS robotns2.second-ns.de.
@ IN NS ns1.first-ns.de.
@ IN A 88.198.38.XXX
localhost IN A 127.0.0.1
mail IN A 88.198.38.XXX
ftp IN CNAME www
imap IN CNAME www
loopback IN CNAME localhost
pop IN CNAME www
relay IN CNAME www
smtp IN CNAME www
www IN CNAME appname.herokuapp.com.
@ IN MX 10 mail
example.com
とwww.example.com
の両方がHerokuアプリを正しく指すようにするために使用する正しい設定は何ですか?
(注:root、base、apexドメインはすべて同じものです。google-fooの代わりに使用します。)
従来、Apexドメインを指すには、サーバーのIPを指すAレコードを使用していました。このソリューションは拡張性がなく、頻繁に変更される複数のバックエンドがリクエストへの応答を担当するHerokuのようなクラウドプラットフォームには実行できません。
サブドメイン(www.example.com
など)の場合、your-app-name.herokuapp.com
を指すCNAMEレコードを使用できます。以降、Herokuはyour-app-name.herokuapp.com
の背後にある動的なAレコードを管理し、常に最新の状態にします。残念ながら、DNS仕様では、ゾーンの頂点(ベースドメイン)でのCNAMEレコードは許可されていません。 (たとえば、CNAMEが最初にターゲットに追従するため、MXレコードが壊れます。)
ルートドメインに戻ると、単純で一般的な解決策は、それらをまったく使用しないことです。フォールバック対策として、一部のDNSプロバイダーは、HTTPリダイレクトのセットアップを提供しています。その場合、example.com
がwww.example.com
へのHTTPリダイレクトになるように設定します。
一部のDNSプロバイダーは、ゾーン頂点でのCNAMEのような動作を許可するカスタムソリューションを開発しています。私の知る限り、 DNSimpleのALIASレコード および DNS Made EasyのANAMEレコード ;どちらも同様に動作します。
これらを使用して、次のようにレコードを設定できます(ゾーンファイル表記を使用して、おそらくWebユーザーインターフェイスでこれを実行します)。
@ IN ALIAS your-app-name.herokuapp.com.
www IN CNAME your-app-name.herokuapp.com.
@
はルートドメインの短縮形(example.com
)であることに注意してください。また、ゾーンファイルと一部のWebユーザーインターフェイスの両方で、末尾のドットが重要であることに注意してください。
AmazonのRoute 53にもALIASレコードタイプがありますが、AWS内を指すようにしか機能しないという点で、多少制限されています。現時点では、これをHerokuのセットアップに使用することはお勧めしません。
DNSプロバイダーとドメイン名レジストラを混同している人もいます。両方を提供している企業と少し重複しているためです。 DNSを前述のプロバイダーのいずれかに切り替えるには、現在のドメインレジストラーでネームサーバーレコードを更新するだけです。ドメイン登録を移管する必要はありません。
Herokuでホストされるアプリケーションでapex/root/nakedドメインを指すには、CNAMEのようなレコード(多くの場合、ALIASまたはANAMEレコードと呼ばれる)をサポートするDNSプロバイダーを使用する必要があります。現在、Heroku 推奨 :
どちらを選択しても、記録は次のようになります。
レコード:ALIAS
またはANAME
名前:emptyまたは@
ターゲット:example.com.herokudns.com.
必要なのはそれだけです。
ただし、 SEOには適していません wwwバージョンとwww以外のバージョンの両方を解決することです。 1つは正規URLとしてもう1つを指す必要があります。これをどのように決定するかは、HTTPSを使用しているかどうかによって異なります。そうでない場合は、おそらくHerokuになっているはずです SSL証明書を自動的に処理します 有料のdynoで実行されているすべてのアプリケーションに対して自動的かつ無料で。
HTTPSを使用していない場合は、名前www
からhttp://example.com
を指すほとんどのDNSプロバイダーで301リダイレクトレコードを設定するだけです。
HTTPSを使用している場合、ほとんどの場合、アプリケーションレベルでリダイレクトを処理する必要があります。理由を知りたい場合は、これらの short および long の説明を確認してください。ただし、基本的にはDNSプロバイダーまたは他のURL転送サービスにはないため、必要はありません。 SSL証明書と秘密キーを使用すると、ドメインのHTTPSリクエストに応答できません。
アプリケーションレベルでリダイレクトを処理するには、以下を行う必要があります。
heroku domains:add example.com
およびheroku domains:add www.example.com
)www
がwww.example.com.herokudns.com.
を指すCNAMEレコードを追加しますSECURE_SSL_REDIRECT
to True
)詳細については、DNSimpleの this post をご覧ください。
現在、Google Apps(メール用)とHerokuをWebサーバーとして使用しています。 Google Apps 301のパーマネントリダイレクト機能を使用して、ネイキッドドメインをWWW.your_domain.comにリダイレクトしています
詳細な手順については、こちらをご覧ください https://stackoverflow.com/a/20115583/1440255
CNAMEはすべてのデータ型をカバーするエイリアス機能であるため、ドメインのCNAMEレコードを持つことは許可されません(クライアントがMX、NSまたはSOAを探すかどうかに関係なく)記録)。また、CNAMEは常にIPアドレスではなく新しい名前を参照するため、実際には1行に2つのエラーがあります。
@ IN CNAME 88.198.38.XXX
そのCNAMEをAレコードに変更すると、使用するIPアドレスがHerokuアプリに適したものである限り、動作するはずです。
DNSでブラウザーで単純なdomain.com
名を機能させるための唯一の正しい方法は、Aレコードを持つIPアドレスをドメインに向けることです。