单个 URL 如何重定向到不同的网站/服务器?(例如:https://hkps.pool.sks-keyservers.net/)

单个 URL 如何重定向到不同的网站/服务器?(例如:https://hkps.pool.sks-keyservers.net/)

昨天,我注意到https://hkps.pool.sks-keyservers.net/在我的笔记本电脑上显示的页面与在我的台式电脑上显示的页面不同。

此 URL 重定向至此处列出的众多服务器之一: https://sks-keyservers.net/status/

与普通的 URL 重定向不同,URL 不会改变,但页面内容会改变。

这到底是怎么回事?如何设置?这和循环 DNS 系统

似乎一旦从那里访问过一次,它就会在给定的 PC 上始终显示相同的“服务器”。它是如何做到的?

http://www.pool.ntp.org/en/似乎是一个类似的系统。

答案1

是的,sks-keyservers.net 的所有池都是使用 DNS 循环设置的。就反向代理而言,它要求所有服务器都启用一个,如果您查看 rprox 列https://sks-keyservers.net/status/一些蓝旗在集群设置中指定后端具有多台服务器的服务器。

循环的实际数据基于 (i) 每小时更新一次完整池 (ii) 权威 DNS 服务器每 15 分钟更新一次 DNS 记录列表。对于非地理池,在 (ii) 中使用随机选择,对于地理池(EU、NA、...),根据描述按 SRV 记录进行排名http://kfwebs.com/sks-keyservers-SRV.pdf

答案2

有几种方法可以做到这一点。
下面是一种非常粗略的描述方法。

一种常见的方式是“https://hkps.pool.sks-keyservers.net/“指向一个带有网络服务器的前端。

然后前端将您的请求代理到它的一个后端服务器。前端服务器选择后端服务器的方法有很多,这round robin是其中一种,number of connections也是另一种。

当您返回到“https://hkps.pool.sks-keyservers.net/“前端要么记住您的 IP 并将您发送到同一个后端,要么后端向您提供一个 cookie,前端读取该 cookie,告诉它您想要转到特定的后端。

答案3

这可能与连接的 DNS 部分没有什么特别的关系。

Web 服务器可以根据浏览器通过其请求标头发送的信息来判断,例如“referer”标签,该标签表示您点击了其他网站上的链接来到这里,或者在这种情况下最有可能是浏览器发送的 User-Agent 字符串。以下是 User-Agent 字符串的几个示例:

在某些 64 位 Linux 版本上运行的 Chrome 版本 32:

用户代理:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,如 Gecko) Chrome/32.0.1700.107 Safari/537.36

或者

在 OS X 10.9.1 上运行的 Safari 版本 7.0.1:

用户代理:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.73.11 (KHTML,如 Gecko) 版本/7.0.1 Safari/537.73.11

这也是网络服务器判断您是否在使用移动设备的方式。

以下是在搭载 iOS 7.0.4 的 iPad 上运行的 Safari 7.0 版本:

用户代理:Mozilla/5.0(iPad;CPU OS 7_0_4,类似 Mac OS X)AppleWebKit/537.51.1(KHTML,类似 Gecko)版本/7.0 Mobile/11B554a Safari/9537.53

如果设计人员有意识地这样做,Web 服务器可以使用此信息来显示不同的页面。举个简单的例子,您可以在 Chrome 和 Safari 上看到不同的页面。但正如您从 User-Agent 字符串的内容中看到的那样,Web 设计人员可以使用其中的大量信息来自定义您返回的结果页面。

相关内容