web-dev-qa-db-ja.com

DNSレコードとサブドメインを配置するためのベストプラクティス

私が持っていると言うmydomain.com

オプションAを使用する方が良いですか:

[A] mydomain.com      123.45.67.89
[A] www.mydomain.com  123.45.67.89

またはオプションB:

[A]     mydomain.com      123.45.67.89
[CNAME] www.mydomain.com  mydomain.com

次々と選ぶことで実際にどのような影響がありますか?

2番目の質問は、サブドメインをblog.mydomain.comに置きたいと言うことです。そして、私はそれを次のようにAレコードとして設定しました。

[A] blog.mydomain.com  123.45.67.89

また、ユーザーが入力しているときにもアクセスできるようにするためにwww.blog.mydomain.com、次のレコードも挿入します。

[A] www.blog.mydomain.com  123.45.67.89

質問は、これは一般的な方法ですか?または、これを行うためのより良い方法はありますか?私が達成したいのは(ユーザーアクセス->リダイレクト先)です:

mydomain.com          -> mydomain.com
www.mydomain.com      -> mydomain.com
blog.mydomain.com     -> blog.mydomain.com
www.blog.mydomain.com -> blog.mydomain.com
other.mydomain.com    -> error

乾杯!

7
nightrod

一般に、メンテナンスを容易にするためのベストプラクティスは、次のようになります。

[A]     mydomain.com            123.45.67.89
[CNAME] www.mydomain.com        mydomain.com
[CNAME] blog.mydomain.com       mydomain.com
[CNAME] www.blog.mydomain.com   mydomain.com
[A]     mail.mydomain.com       123.45.67.89
[MX]    mydomain.com            mail.mydomain.com

これにより、メールレコードを中断したり、各サブドメインを手動で変更したりすることなく、mydomain.comのAレコードを変更できます。

また、これらの名前に応答するようにWebサーバーを設定する必要があります。 Apacheでこれを行う例を次に示します。

NameVirtualHost 123.45.67.89:80
<VirtualHost 123.45.67.89:80>
    DocumentRoot /var/www/html/mydomain.com
    ServerName mydomain.com
    ServerAlias www.mydomain.com
    ErrorLog logs/mydomain.com-error_log
    CustomLog logs/mydomain.com-access_log combined
</VirtualHost>

<VirtualHost 123.45.67.89:80>
    DocumentRoot /var/www/html/blog.mydomain.com
    ServerName blog.mydomain.com
    ServerAlias www.blog.mydomain.com
    ErrorLog logs/blog.mydomain.com-error_log
    CustomLog logs/blog.mydomain.com-access_log common
</VirtualHost>

あなたが言及したリダイレクトの場合:

質問は、これは一般的な方法ですか?または、これを行うためのより良い方法はありますか?私が達成したいのは(ユーザーアクセス->リダイレクト先)です:

mydomain.com          -> mydomain.com
www.mydomain.com      -> mydomain.com
blog.mydomain.com     -> blog.mydomain.com
www.blog.mydomain.com -> blog.mydomain.com
other.mydomain.com    -> error

クライアントのアドレスバーに表示されるURLを実際に変更するには、サーバー側でmod_rewriteを使用して行う必要があり、DNSの機能ではありません。

9
Bryan White

オプションB.CNAMEレコードを使用して、既存のAレコードのエイリアスを指定します。同じことがブログとwww.blogのエントリにも当てはまります。 CNAMEレコードを選択すると、1つの場所(Aレコード)で実際のIPを変更できます。すべてのエントリをAレコードとして作成する場合は、それぞれを個別に更新する必要があります。

3
HostBits

最初の質問では、どちらの方法でも実行できます。 CNAMEとして1つ持つことの唯一の実際の影響は、その名前が検索されると、場合によっては2番目のDNSルックアップが、それが指している名前をフェッチすることです(したがって、今はwww.example.comを検索して取得しますexample.comへのポインタであり、実際にIPを取得するにはそれを検索する必要があります)。違いは通常ミリ秒のオーダーであり、サーバーがそれを認識している場合は、ポインターのIPも応答に含まれることがあり、2回目のルックアップを回避します。ただし、それでもより大きなDNSパケットが作成されます。私はそれらをAレコードとして定義し、自分のドメイン外のホストにはCNAMEsを使用することを好みます。

2番目の質問については、好きなように構成できます。Webサーバーがそれらに応答し、必要に応じて適切なHTTPレベルのリダイレクトを提供することを確認してください(DNSはブラウザーのアドレス要求を別のURLにリダイレクトしないことに注意してください) 。

2
Justin Scott