由于知识上的差距,我在 Azure 上设置了一个 Windows VM,然后我去了 Namecheap 并注册了一个域。在某个地方,我想到了针对 @ 和 FQDN 输入 CNAME 记录,并且它有效。
在我的姓名记录中,针对 Azure VM FQDN 的 CNAME 字面上有 2 个条目 @ 和 www。一切都很顺利。
昨天,我正在为其工作的人去切换不在 Namecheap 的计划域上的名称服务器(我使用的是我在 Namecheap 注册的虚拟域)并且无法做我所做的,我们花了几个小时调查它。
今天,我使用了一个工具来查找站点,似乎 Namecheap 使用我提供的域来查找 IP 地址并针对该 IP 输入 A 记录,但它没有出现在管理页面上。所以它是在后台完成的。昨天我重置了 VM,IP 发生了变化,几分钟后域就恢复了。
这有多正常?这有多稳定?我在 Azure 上没有专用 IP。
我现在明白非 www 域上的 @ 是不正常的(即通常不能将 @ 放在 CNAME 记录中)。但是是否有信誉良好的域名托管服务商免费提供这项服务?它是我可以搜索的吗?(第二个问题是 Namecheap 目前不愿意转移这个域,因为显然 .com.au 域很难转移)。
如果这种情况很少见,我唯一的选择是向 Azure 支付静态 IP 并使用 A 记录吗?
任何标准都不真正支持根目录下的 CNAME,但一些提供商会这样做,因为它非常方便。正如您所注意到的,问题在于,由于它不是一个标准化的解决方案,因此实现会有所不同,例如查询 CNAME 中的名称、解析它并将 IP 作为 A 记录插入。
我不推荐这种做法,因为根记录需要是 A 或 AAAA 记录是有实际原因的。
处理此问题的正确方法是从 Azure 购买并支付静态 IP,或者,如果您托管大量此类站点,则为负载均衡器/反向代理获取单个静态 IP,然后让它将请求转发到您的动态 Web 应用程序。
或者,您可以使用 Cloudflare,因为他们实际上已经设法在根实现中创建了符合 RFC 的 CNAME。https://blog.cloudflare.com/introducing-cname-flattening-rfc-compliant-cnames-at-a-domains-root/
CNAME 仅表示别名。它与 A 记录一样可靠,只是多个域使用相同的 ip。但是,如果您使用 CNAME 的域过期或停止存在,那么您将遇到相同的问题,即查找您的域指向的位置。
A记录:
域1 ip
域2 ip
是相同的 :
域1 ip
域 2 域 1
只有在第二种情况下,如果域 1 ip 更新,域 2 也会更新,但在第一种情况下,两个域都需要在 ip 更改时单独更新。