1

我正在使用Rails 3.1.1,并且希望将用户从美国重定向到适当的子域us.site.com(此域名与site.com位于同一台服务器上)。我知道我可以通过他/她的IP地址本地化一个用户,但是我怎么做才能将他/她重定向到正确的子域?有一种技术/创业板来地理定位用户IP,然后处理重定向?如何根据用户的当前位置将用户重定向到子域?

附::也许,出于性能的考虑,我应该使用中间件...

回答

1

https://rubygems.org/gems/rack-geoipcity是我发布的机架中间件宝石,您可以使用,或者只是在您的控制器中使用GeoIP宝石。

使用rack-geoipcity,您可以查询它添加的X-header并根据该信息做出决定。例如:

if headers['X_GEOIP_COUNTRY_CODE'] == "IN" 
    redirect "/india" 
end 

虽然我目前没有使用Rails,所以它可能会稍有不同。

There are plenty to choose from如果你不喜欢使用MaxMind db。

1

的一种方法,我已经在过去使用的愉快是通过DNS 用户连接到该服务进行地理位置查找;通过这种方式,他们可以自动连接到离他们最近的服务器,您可以获得便宜且容易的负载平衡以及根据需要从主动使用中移除服务器的能力,并且单个站点可以在不影响其他站点的情况下关闭。

OFTC使用自己写的oftcdns工具为用户提供最近的服务器。在我担任OFTC网络的管理员期间,该工具比运行更简单的基于Bind的DNS服务器有了巨大的改进,该服务器不提供地理位置功能,也无法将服务器带入和退出轮换。

维基百科使用PowerDNS with a geobackend来提供他们的地理-IP服务。 PowerDNS绝对是测试良好,需求量大的工具。

+0

简而言之,我希望将用户重定向到托管在主域相同服务器上的子域。也许你的解决方案是“先进”的我的需求... – Backo 2012-01-05 02:14:44

+0

@sarnold +1,这看起来很有趣。 – iain 2012-01-05 03:21:10

+1

@Iain:它绝对可以解决其他时尚难以解决的问题,但是您的Rack中间件看起来更像适合Backo的_much_。 :) – sarnold 2012-01-05 03:35:07