如果我有一个域名,访问者来自美国和欧洲,并且有 2 台服务器,一台在美国,一台在英国,我该如何强制来自美国的用户访问美国服务器,来自英国的访问者访问英国服务器,以减少访问者的 ping?
首先,这可能吗?为什么像谷歌这样的公司会为每个国家设置不同的域名?
答案1
为什么像谷歌这样的公司在每个国家都有不同的域名?
因为这样可以更轻松地为每个国家/地区提供单独的内容。内容应该是静态的 - 因此,如果您希望英语和西班牙语页面被索引,则它们必须具有单独的 URL。一种方法是example.com/en
- 另一种是en.example.com
。后者的扩展性更好。
首先这可能吗?
不适合你。你需要一个支持任播路由的提供商。
要自己做,您需要自己的国际路由 IP 地址 - 普通用户不可能获得这些地址,因为分配的最小块超过 4000 个地址(您必须使用)并且成本很高。
如果您得到一个,您将获得作为 AS(自治系统)的路由,并只发布前往最近服务器的路由。
所以,不适合你。但有些主机可能支持它。
CDN 可以做到这一点 - 因此您可以将静态内容转移到内容传送网络。
你能要做的是国家前缀,然后从主域重定向到它们。
答案2
+1,表示任播路由是“真正的解决方案”。
更简单的替代方案是为每个大洲提供不同的 DNS 记录。亚马逊将其作为基于延迟的路由但我认为其他大型 DNS 提供商也提供类似的工具。
答案3
有些人提到 CDN 是一种解决方案。你其实并不需要它。你所需要的只是让你的域的权威 DNS 服务器根据用户的 DNS 请求来自何处(以及可能的当前负载)为给定用户选择最佳服务器。例如,Akamai 虽然也是最大的 CDN,但它提供了一款名为全球交通管理它与提供此项服务的 CDN 产品完全不同(收费)。它通过成为您管理的各个域的权威 DNS 服务器来实现这一点,然后对于传入的 DNS 请求,它会分发您的 Web 服务器的 IP 地址,正确考虑负载和位置。
如果您的服务器无法处理您的负载(并且您不想购买和管理更多服务器),那么您就需要一个 CDN,但这听起来不像是您的问题。
答案4
您还可以研究基于位置的负载平衡接近。或者查看像 Fastly 这样的交付加速器。