放置 DNS 记录和子域名的最佳实践

放置 DNS 记录和子域名的最佳实践

说我有我的域名

使用选项 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

依次选择实际上会产生什么影响?

第二个问题是,假设我想在博客.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

干杯!

答案1

一般来说,为了便于维护,最佳做法是这样的:

[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 记录,而不会破坏您的邮件记录或必须手动更改每个子域。

您还需要设置您的网络服务器来响应这些名称。以下是在 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 的功能。

答案2

选项 B。使用 CNAME 记录为现有 A 记录指定别名。同样适用于博客和 www.blog 条目。选择 CNAME 记录允许您在一个位置(A 记录)更改实际 IP。如果您将所有条目都设为 A 记录,则需要分别更新每个条目。

答案3

对于第一个问题,您可以用任何一种方式来做。将一个 CNAME 作为 CNAME 的唯一实际影响是,当查找该名称时,在某些情况下会导致第二次 DNS 查找以获取它指向的名称(所以现在我查找www.example.com并获取一个指针example.com,然后必须查找它才能真正获得 IP)。差异通常在毫秒级,有时如果服务器知道,指针的 IP 也会包含在响应中,从而避免第二次查找。但它仍然会创建更大的 DNS 数据包。我更喜欢将它们定义为A记录,并使用CNAMEs 来表示我自己域之外的主机。

至于第二个问题,您可以根据需要配置它们,只需确保 Web 服务器能够回答它们并根据需要提供适当的 HTTP 级别重定向(请记住,DNS 不会将浏览器的地址请求重定向到另一个 URL)。

相关内容