我们正在将我们的商店移动到具有新 IP 地址的新服务器,并且我正在尝试确定是否有办法最大限度地减少在 DNS 传播期间仍然“看到”我们旧网站的用户数量。
目前的计划是,一旦我们开始迁移,就将旧网站置于维护模式,这样用户在访问旧网站时就会看到 503 消息。
基本上我正在尝试解决这个用例:
服务器迁移已完成,我们已将域 A 记录更新为新 IP 地址。在 DNS 更改完全传播之前,用户访问我们的网站并被定向到旧服务器。
有没有办法向访问旧服务器的用户表明我们的网站现在位于新的 IP 地址上?我知道我可以使用新 IP 地址而不是域名来重定向他们,但如果可能的话,我宁愿不使用该解决方案。有没有办法表明现在example.com
应该映射到111.111.111.111
服务器级别?
从我看到的有关处理 DNS 传播的其他答案来看,我怀疑这是不可能的。如果这不可能,我很好奇这样做是否有充分的理由。如果有一种机制可以让服务器能够告诉用户他们请求的域现在应该映射到不同的 IP 地址,那么这似乎很有用。
答案1
不存在这样的机制。这是因为 DNS 及其缓存机制就是这样运作的。
这通常在迁移之前处理,通过将 A 记录的 TTL 设置为可能的最小值,以便 DNS 服务器尽可能短地保存 IP 地址缓存。
但是,只有在极少数情况下,您才可以将 TTL 设置为零,这样就可以完全消除延迟。通常,DNS 提供商允许的最小 TTL 为五到十分钟,这是您的网站对某些用户不可用的时间。
另一种方法是在旧 Web 服务器上设置反向代理,在迁移期间将请求和响应转发到新服务器。这只会使访问者的页面加载时间略长,但他们将能够始终访问该网站。
编辑:正如另一个答案中提到的,代理默认会丢失客户端 IP 地址。但是,可以配置代理,以便将客户端 IP 地址作为 HTTP 标头添加到从旧服务器到新服务器的请求中,然后新服务器可以从标头中应用 IP 地址。
答案2
您可以启用 IP 转发,然后在 IP 级别转发流量(请参阅http://www.debuntu.org/how-to-redirecting-network-traffic-to-a-new-ip-using-iptables/举个例子)。我认为这比代理有好处,因为你可以保留连接到网站的人的 IP 地址,并且该地址会被正确记录。