我正在将我的Web应用程序移动到另一台服务器,在接下来的几天内,我将刷新DNS以指向新的IP位置.
不幸的是,一些浏览器和SO保留了一个DNS缓存,使用户可以指向旧的IP位置.有些用户是新手,他们不会手动刷新DNS缓存,我知道在这次更改后的最初几周我们会失去很多.
反正是否强制这个DNS缓存刷新,所以它对我们的最终用户是透明的?
你不能强制刷新,但你可以转发所有旧的IP请求到新的.对于一个网站:
用旧服务器的ip替换[OLD_IP]
用新服务器的ip替换[NEW_IP]
跑赢.
echo"1">/proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -d [OLD_IP] -p tcp --dport 80 -j DNAT - 到目的地[NEW_IP]:80
iptables -t nat -A PREROUTING -d [OLD_IP] -p tcp --dport 443 -j DNAT --to-destination [NEW_IP]:443
iptables -t nat -A POSTROUTING -j MASQUERADE
没有保证强制用户清除DNS缓存的方法,并且通常由他们的ISP在他们的操作系统上完成.更新的DNS传播不应超过24小时.您最好的选择是通过使用mod_proxy和Apache之类的东西向用户创建无缝过渡,以便为新服务器创建反向代理.这将导致对旧服务器的所有查询仍然返回正确的结果,几天后您可以自由删除反向代理.
据我所知,像这样的强制更新是不可能的.如果您的名称服务器服务提供商允许,您可以通过在更改条目之前减少条目的TTL(生存时间)值来减少DNS停机时间.
这是一个较少痛苦的DNS更改指南.
但是,公平的警告 - 不是客户端和权威(源)名称服务器之间的所有名称服务器都会强制执行您的TTL,它们可能有自己的缓存时间.