旧的VirtualHost在迁移后应该返回什么HTTP状态码

我们已经把一个网站从一个服务器移到另一个。

DNS被适当地更新了,但是有些服务器并不尊重TTL,有些地方可能会使旧服务器的IP硬编码。

我应该如何通知他们VirtualHost不在这里?

有没有一个适当的HTTP状态码(可能是503)?

如果这不是HTTP的责任,有没有更好的办法?

HTTP状态码301用于指示站点已经根据RFC2616永久地移动到新的位置(500系列通常指示服务器错误),但是redirect通常使用URL / DNS主机名来redirect。 如果你的问题只是TTL中的一个,那么除非你同时拥有一个新的IP 一个新的URL,否则使用一个301将不会起作用。 实际上,使用301redirect会将网站访问量打破到您的网站,因为用户的浏览器会一直重复导向到同一个地方,永远不会加载网页。

简而言之,你将不得不鼓励人们在他们的DNS实现中遵守RFC,并且尊重TTL,并简单地等待caching。 一旦你确定caching已经过期并且已经更新,你将不得不接触到所有这些硬编码IP,并且让它们更新或者(首选)使用DNS。

否则,您可能需要启动一个维护页面,通知用户该问题,并要求他们联系他们的IT部门来报告问题。

在TTL期间为Alogging避免站点可用性问题的一个解决scheme是在旧服务器中实现反向代理,该服务器将请求中继到新服务器。 通过这种方式,结束旧服务器的人将从新服务器获取页面。

如果您的站点使用客户端IP地址,则需要configuration旧站点反向代理以添加带有客户端IP地址的HTTP标头,并configuration新站点以使用来自HTTP标头的IP地址作为客户端的IP地址。