使用 DNS 记录将根域转发到 www 子域

使用 DNS 记录将根域转发到 www 子域

我已www.mydomain.com指向一个 Azure 网站。

www.mydomain.com --- CNAME --- mydomain.azurewebsites.net

当我访问时www.mydomain.com,一切都正常。这很好。

问题是,mydomain.com不起作用。 Azure 仅允许 www 子域。

在某些名称服务器中,我使用 FWD 记录将根转发到 www,这很有效。我当前的名称服务器 (zoneedit.com) 没有此 FWD 记录。

是否存在可用于将根域转发到 www 子域的 DNS 记录?

答案1

不幸的是,这是 DNS 协议的一个众所周知的缺点。DNS 标准中没有定义允许您为域名的顶点设置别名的记录类型。许多人认为CNAME可以使用记录来实现这一点,但由于技术原因,他们无法

许多 DNS 提供商实施自定义(即:虚假)DNS 记录类型,以尝试解决这一缺陷。在幕后,这些虚假记录会结合使用合成A记录和 Web 服务器重定向,在该公司的软件中实施自定义行为,以实现您的预​​期目标。FWD就是其中之一,就像WebForwardMichael 在评论中向您指出的那样。

答案2

摘要:简而言之,您无法获得想要的记录,并且您的 DNS 主机正在以正确的方式执行操作。

解释:在区域顶点(区域前面的空名称)拥有 CNAME(别名记录/转发记录)违反了 DNS 标准。

原因是 CNAME 记录的名称部分不能与除 DNSSec 记录之外的任何记录冲突。在典型的区域中,区域顶点的 CNAME 记录至少会与 SOA 和 NS 记录(以及可能还有其他几个记录)发生冲突。虽然某些 DNS 服务器允许这种情况,但这是一件坏事,并且可能导致难以诊断的故障(更不用说如果您将区域的托管移动到符合标准的 DNS 服务器(例如基于 BIND 的任何服务器)将无法正常工作)。

在区域顶点处有 A 记录(它们可以是一个简单的 Web 服务器,只向 www 发出 HTTP 302)。如果您可以为 Azure 服务器实例获取静态 IP 号码,请在区域顶点处为每个实例放置一条 A 记录,并创建一条指向顶点记录的名为“www”的单个 CNAME 记录。

举个例子 :

 

$ORIGIN example.com。

@ 在 SOA ns1.example.com 中。  [电子邮件保护]。 (
                                 101;
                                 172800;
                                 900;
                                 1209600;
                                 3600; )
@ IN NS ns1.example.com。
@IN NS ns2.example.com。
@ 在 123.234.1.123
@ 在 123.234.1.124
@ 在 123.234.1.125
ns1 在 123.234.1.126
ns2 在 123.234.1.127
www IN CNAME example.com。

答案3

某些协议对用于查找服务的 DNS 记录类型(除 A 记录外)有标准。SMTP 及其关联的 MX 记录就是一个很好的例子。HTTP 没有定义的 DNS 记录类型。您之前的 DNS/注册商提供商可能提供 HTTP 重定向或反向代理服务。

为了实现您的目标,您需要设置一个 Web 服务器(虚拟主机)来执行从一个主机名到另一个主机名的 HTTP 301 或 302 重定向,设置反向 HTTP 代理,设置独立的虚拟主机,或者使用虚拟主机别名,这样同一个 Web 服务器实例将响应两个 A 名称。

答案4

根据您的 DNS 提供商,有一个选项可以执行 CNAME 扁平化(https://developers.cloudflare.com/dns/cname-flattening/

但请注意,此功能尚未在所有 DNS 提供商中提供。

相关内容