我们已将网站从一台服务器移至另一台服务器。
DNS 已适当更新,但有些服务器不遵守 TTL,有些地方可能有旧服务器的 IP 硬编码。
我应该如何通知他们VirtualHost 不再存在?
是否有适当的 HTTP 状态代码(可能是 503)?
如果这不是 HTTP 的责任,有没有更好的方法?
答案1
HTTP 状态代码 301 用于指示站点已根据以下要求永久移动到新位置:RFC2616(500 系列通常表示服务器错误)但是,重定向通常使用 URL/DNS 主机名进行重定向。如果您的问题只是 TTL 之一,那么使用 301 是行不通的,除非您有新的 IP和新的 URL 也是如此。事实上,使用 301 重定向会中断您网站的网络流量,因为用户的浏览器只会不断重定向到同一个位置,而不会加载网页。
简而言之,您必须鼓励人们在 DNS 实施中遵守 RFC 并遵守 TTL,只需等待缓存即可。一旦您确定缓存已过期并已更新,您将必须联系所有这些硬编码 IP,并让它们更新或(首选)使用 DNS。
否则,您可能需要打开一个维护页面,通知用户该问题并要求他们联系其 IT 部门报告该问题。
答案2
避免 A 记录 TTL 期间网站可用性问题的一种解决方案是在旧服务器中实施反向代理,将请求转发到新服务器。这样,最终访问旧服务器的人将从新服务器获取页面。
如果您的站点使用客户端 IP 地址执行某些操作,则需要配置旧站点反向代理以添加包含客户端 IP 地址的 HTTP 标头,并配置新站点以使用 HTTP 标头中的 IP 地址作为客户端的 IP 地址。