我的怀疑是,一旦连接被接受,这是不可能的,但我确实对浏览器实现或 DNS 标准有足够的了解。问题是,一旦客户端(Web 访问者)与已解析的 Web 服务器建立了连接,是否可以使用该服务器上的 PHP 脚本来强制客户端尝试连接到下一个可用的 A 记录(就好像服务器已经从未联系到或确认请求开始)?
我宁愿远离重定向,除非可以通过某种方式确定客户端在循环 DNS 配置中接收到的 A 记录的顺序(我不相信服务器可能知道)。
我的怀疑是,一旦连接被接受,这是不可能的,但我确实对浏览器实现或 DNS 标准有足够的了解。问题是,一旦客户端(Web 访问者)与已解析的 Web 服务器建立了连接,是否可以使用该服务器上的 PHP 脚本来强制客户端尝试连接到下一个可用的 A 记录(就好像服务器已经从未联系到或确认请求开始)?
我宁愿远离重定向,除非可以通过某种方式确定客户端在循环 DNS 配置中接收到的 A 记录的顺序(我不相信服务器可能知道)。
下面是浏览器-DNS交互的过程:
(我会将查询传递给 TLD,这在此处无关紧要)
浏览器要求域的 DNS 访问正确的 IP。
DNS 根据自己的内部规则决定将哪个 IP 发送到浏览器。
浏览器的DNS回答“这个域有这个IP”
永远没有办法“影响”DNS。
所以不,一旦通信开始并且 TCP/IP 通道打开,您就不能“跳转”到另一台服务器。
现在,如果你想这样做,除了使用 301 或 302 重定向之外别无他法
再说一次,如果你必须这样做,我猜你的负载平衡肯定是错误配置的。
DNS 负载平衡器应该在您分派 IP 分派规则之前了解它们。如果没有发生这种情况,则说明您配置错误,或者没有安装或编程您必须做的事情。