我设置了一个指向的合成记录,example.com
并且这个方法有效。我还有一个指向托管我图片的网站的www.example.com
CNAME ,这个方法有效。a.example.com
我想www.example.com
重定向到a.example.com
,同时构建一个网站进行部署www.example.com
。
我使用了 CNAME ,www.example.com
但a.example.com
不起作用。我读到的所有内容都说 CNAME 是正确的工具,那么到底是怎么回事呢?
更新:需要澄清的是,我在 Namecheap 上设置这些记录(但这应该适用于所有其他域名管理器,如 Google Domains),而不是 Windows Server 或 Apache 或 NGINX。
答案1
name optional_TTL CLASS RR canonical name
www.example.net. 3600 IN CNAME a.example.com.
简化的 DNSCNAME
记录只不过是通过使用主机的 DNS 名称将 DNS 记录指向另一个主机的规范名称,而不是通过创建A
输入主机的 IP 地址。
在 DNS 更改之后,您通常需要重新配置 a.example.com
,并使在那里运行的服务知道它们可以通过其他主机名访问, www.example.net.
而不仅仅是通过a.example.com
。
如果您不这样做,事情可能会顺利进行,例如,一个运行纯 http 的 Web 服务器,无论使用什么主机名访问该 Web 服务器,都只有一个网站会显示该网站,但是对于在 HTTPS 上运行多个虚拟主机的 Web 服务器,您将需要同时请求带有域名的新 TLS 证书,www.example.net.
并且您需要创建一个新的虚拟主机条目,或者添加www.example.net.
到特定的现有虚拟主机。
答案2
CNAME 记录不应指向另一个 CNAME 记录。
找出您的a.example.com
CNAME 实际指向的位置,然后将您的www.example.com
CNAME 设置为直接指向该位置。
答案3
因此,您可以查看我的评论,以获得一些关于如何解决问题的见解。但我认为,对 DNS 记录如何工作以及如何实现您正在寻找的重定向的明确答案会更合适。RFC 可能是站点源的正确方法,但我喜欢用我自己的例子来解释。因此,我将提供来自我的 Windows 2016 Active Directory 服务器的屏幕截图,该服务器也在服务器上本地运行 DNS。现在,如果您在 Linux/Windows 上使用类似 bind 的东西,那么概念应该是正确的,但显然配置方法不同。
因此,您的 DNS 服务器将为您的域配置一个正向查找区域。如下面的屏幕截图所示,我在此实例中的正向查找区域是 digiecho.xyz:
在查找区域中,您可以看到我有各种指向 IP 地址的 A 记录。根据我的经验,这些是最常见的记录类型。因此,您应该有一个 A 记录,其中您的 www.domain.com 指向某个 IP。在我的示例中,我将使用 VC01 的 A 记录。
CNAME 或规范名称允许您将一个名称别名为另一个名称。我将创建一个 CNAME 记录 vcenter.digiecho.xyz 并将其指向我的 A 记录 VC01(请参阅下面的屏幕截图了解记录创建示例和有关 CNAME 的信息):
https://support.dnsimple.com/articles/cname-record/
然后,您可以使用 dig 或 nslookup 等 DNS 工具来排除故障。由于这一切都在我的内部网络上,所以我只是从我的虚拟主机上的另一台服务器使用了 nslookup 来显示一些相关输出,以帮助您进行故障排除:
如您所见,它不仅告诉我别名指向的真正规范域。但是,它应该报告返回记录的服务器。因此,如果您的 DNS 环境中有主从配置,您将需要确保区域传输已从主服务器传输到所有从服务器,以确保它们都具有正确的区域。如果您使用的是 Linux,只需 man dig 即可获取命令参数。但实际上,这些基本的 DNS 检查和故障排除应该足以解决 CNAME 问题。