我目前正在开发一个网络平台,用于支持许多小型网站。所有网站都将托管在这个平台上,无论是专用还是 VPS 设置。我不想提供完整的 DNS 托管服务,承担路由电子邮件等的责任,我只想负责域名的“网站”部分。
对此问题最明显的解决方案是将域名的“www”A 记录指向我的服务器 IP,这样可以达到预期的效果。但是,如果我的服务器死机了,我需要将所有网站切换到具有不同 IP 的其他服务器上的备份,该怎么办?我需要联系所有不同域名的所有 DNS 提供商,让他们重新指向他们的 A 记录。这不是理想的情况。
所以......问题是,是否有合理的方法来处理这样的事情,或者我是否最好咬紧牙关,通过 Cloudfare 或 DYN 等专用服务提供完整的 DNS 服务?
感谢您的任何建议/解决方案。
答案1
我不确定我会把它描述成强壮的。这将涉及多个后端服务器、前端的一对故障转移负载均衡器、一个具有非 HA 版本的备份站点,以及在发生足够大的灾难时可以在站点之间切换的 IP 地址的使用。
但是,如果您希望提供不包含上述所有功能的 Web 托管服务,不控制客户的 DNS,但保留在需要时将操作重新指向第二个站点的能力,而无需联系所有客户让他们更新 DNS,那么使用 s 即可实现此目的CNAME
。为了清楚起见,假设您的服务器位于记录指向的 IP 地址上A
。server.example.com
假设您有两个客户,其域名分别为example.org
和example.net
。
每个客户端都会发布CNAME
其 www 主机名的记录,指向您的服务器:
www.example.org. IN CNAME server.example.com.
www.example.net IN CNAME server.example.com.
如果您需要更改服务器的 IP 地址,您可以更改 的A
记录,该记录server.example.com
在您的控制之下,并且在 DNS 缓存过期的适当间隔后,www.example.{org,net}
将开始解析为新地址。
这里的问题在于裸域名。 正如这些地区所熟知的那样,您不能将CNAME
根域名作为域名。因此,只要客户愿意将他们的 Web 服务器完全放在 上www.example.org
,您就没问题。但是,一旦有人要求在 上提供 Web 服务example.org
,您就会遇到问题。
然而,Michael Hampton 指出,一些大型 DNS 提供商(他明确列出了 Namecheap 和 GoDaddy,但这不应被视为对其中任何一家的认可)也将提供 Web 重定向服务,其中裸域上的 A 记录指向DNS 提供商的web 服务器,其唯一功能是接收客户端浏览器的请求http://example.org/foo
并通过 HTTP 301 重定向将其重定向到http://www.example.org/foo
,此时已描述的机制将接管,请求将由您的服务器满足。坚持使用根服务的客户可以被告知,他们必须从提供此类设施的提供商处获取 DNS。
对于希望在根目录上使用 HTTPS 服务的客户端(例如https://example.org/bar
),这仍然不起作用;我不知道在没有更多基础设施的情况下如何实现这一点。但您应该可以按照上述方式为其他所有人提供服务。