如果我首先从位于 A 城市的服务器发布我的网站,然后将该服务器移至 B 城市(我希望更改其 IP 地址),网站的用户是否仍可以通过相同的 URL 访问它?我从 DNS 的角度考虑这个问题 - 我希望能够使用域名注册商将此(理论上的)网站域名的映射更改为新的 IP 地址,但我担心在迁移之前访问过该网站的一些用户将被指向旧的 IP 地址。
我听说 DNS 映射是“缓存的”,并且该缓存仅在一段时间后过期,这可能导致迁移前的用户无法收到新的 IP 地址信息,但我无法找到针对上述情况的任何具体信息。
总结一下,我是否需要担心在迁移和更改 IP 地址后,迁移前的用户无法通过相同的 URL 访问网站?如果是,那么我该怎么办?
(附带问题:在搬迁到新城市后,ISP 是否允许我保留相同的 IP 地址?如果搬到其他国家/地区呢?我之所以问这个问题,是因为如果我可以保留 IP,那么就可以避免任何与缓存或其他相关的问题。)
答案1
使用新的 IP 地址更新域的 DNS:
例如,
example.com. IN A 192.0.2.1
你把
example.com. IN A 198.51.100.1
之前访问的用户example.com
将继续使用相同的名称进行访问;IP 地址的更改对他们来说是透明的。这就是 DNS 的目的:即使 IP 地址可以更改,也能够使用固定名称。
各种 Web 面板中提供的各种可视化 DNS 编辑器也允许进行此类更改。将会出现一些“DNS 缓存”问题,这是因为每个记录也有一个 TTL(生存时间)设置,DNS 服务器可能会在这段时间内对其进行缓存。在此期间,一些用户将访问新 IP(如果他们的 DNS 服务器缓存中没有旧记录),而一些用户仍将尝试访问旧 IP。对于那些缓存了旧地址的用户,网站将无法工作,直到缓存过期,这是您遇到的最糟糕的事情。此停机时间通常为 2 天到 1 小时。您可以使用各种 DNS 工具检查您的 DNS 缓存(找到 DNS 镜像并输入您的站点名称;它应该显示 TTL 以及其他信息)。
可以进行准备,使外部用户的停机时间仅持续几秒钟。您需要在旧 IP 和新 IP 上设置反向代理,并将真实服务器作为其后端。然后,无论将哪个 IP 返回给用户,反向代理都会在该地址上运行,并且它将知道在哪里找到真实服务器。当您移动服务器更改其地址时,您只需更新反向代理的配置,这几乎可以立即完成。然后您更新 DNS,当记录的 TTL 到期时,您可以根据需要将设置恢复为无代理。这需要同时在两个地方进行操作,但如果停机时间至关重要,那么这是必经之路。
如果您更换了 ISP,并且您的 IP 已绑定到 ISP,则您无法保留它。(您很可能没有独立于提供商的地址;如果有,您可能还有一个 IT 部门,他们无论如何都知道该怎么做。)至于更换城市但保留相同的 ISP,您应该询问他们,因为有时存在技术上的可能性,可以随您一起移动 IP。但不要依赖这个!而且,我相信,没有一家 ISP 会跨越国家/地区并允许您保留 IP 地址。