![基于位置的 Web 服务器路由](https://linux22.com/image/602468/%E5%9F%BA%E4%BA%8E%E4%BD%8D%E7%BD%AE%E7%9A%84%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%B7%AF%E7%94%B1.png)
我有一个网站,其用户来自香港和澳大利亚。
不幸的是,由于服务器位于澳大利亚,香港用户将遭遇延迟问题。流量必须经过美国才能返回澳大利亚。
因此,我也在香港设置了一台服务器,使用 .hk TLD 的用户将被重定向到香港网络服务器。它与澳大利亚服务器共享同一个数据库服务器,但由于积极的 SQL 查询缓存,SQL 查询延迟对性能的影响可以忽略不计。
但对于习惯使用香港网站但后来前往澳大利亚的用户来说,他们会遭遇额外的延迟,因为他们访问 .hk 网站时,即使他们在澳大利亚,该网站也会重定向到香港服务器。该网站面向来自香港的留学生,所以这对我来说是一个重大问题。
我如何根据用户的位置重定向用户,而不是根据 TLD 将用户重定向到最近的 Web 服务器?
目前我正在使用 nginx、postgres 和 Django。假设我知道如何根据用户的 IP 地址估计用户的位置,我的下一步是什么?我应该在哪个级别上工作?我应该阅读哪些主题?
答案1
一种选择是使用 nginx 中的 GeoIP 模块并将用户重定向到相应的站点。在这种情况下,请求将很慢,直到重定向到相应的站点。
第二种选择是 DNS。使用基于 Geo DNS 的解决方案。您可以在此处阅读更多相关信息线. 如果用户使用 Google DNS 或 OpenDNS,则 GeoDNS 不起作用