我接手了一个内部网站,该网站每天有数百名不同的用户访问。他们都知道如何访问该页面,只需输入http://旧服务器名称/站点尽情享受吧。我们已经将网站移至新服务器,一切顺利。问题是旧服务器即将退役,他们想尽快完成。创建并运行该网站的人本应在 3 月完成这项工作,但他一直拖延到他离开公司,现在由于最后期限,管理员们都对我指手画脚。
这就是我的困境。如果我们关闭旧服务器,http://旧服务器名称/站点(该网站已运行了 10 多年,每个人都收藏了该网站,并在各种随机文档和 SOPS 中列出),不再起作用。他们必须使用http://新服务器名称/站点到达同一页面。我告诉管理员这远非理想,并请求一些 DNS 支持,结果被关闭了。
他们不想 cname,他们不想在新服务器部署后保留旧服务器,而且他们也不太在意,因为这应该在三月份完成。
我这周才发现这一切,回到过去是不可能的。那么,没有 cname,旧服务器仍在运行,带有警告页面和重定向,或者没有时间机器,我有什么选择?
答案1
好的解决方案
正确的解决方案是获取 CNAME。这就是 DNS 的设计目的。在这种情况下,买甜甜圈、打电话对人大喊大叫和去找经理都是适当的行动。
糟糕的解决方案
如果这不是一个选项(我不确定我是否可以接受,但我会尝试继续)。我唯一的策略是创建一个脚本,向用户主机文件添加一个条目。这将基本上覆盖 DNS 服务器。如果您对任何机器都有管理控制权,您可以简单地覆盖或附加到主机文件。有关主机文件的一些信息可以在以下位置找到http://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/
如果您没有用户计算机的管理员权限,我会将旧服务器站点上的主页替换为下载链接和运行脚本的说明。听起来您已经有了计数解决方案,但如果没有,请在旧网站上添加一个计数器,以便您可以查看并更重要的是与您的老板沟通如果机器关闭将有多少用户受到影响。我还会尝试获取所有将旧服务器名称替换为新服务器名称的文档。
这最终会导致需要做大量的工作来支持。
答案2
您可以使用正向流量,等待 DNS 传播
在旧服务器上执行
echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination IPNewServer
iptables -t nat -A POSTROUTING -p tcp -d IPNewServer --dport 80 -j MASQUERADE
但最终的解决方案是更改 DNS 并在旧服务器上使用 301 Moved Permanently
.htaccess 文件:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^oldservername/site [NC,OR]
RewriteCond %{HTTP_HOST} ^www.oldservername/site [NC]
RewriteRule ^(.*)$ http://newservername/site/$1 [L,R=301,NC]
等到你的脚碰到胡子时才告诉你所有访客都在更改书签