1

这是我正在使用的模块:http ://wiki.nginx.org/HttpGeoipModule

据我所见,由于它是在 nginx 配置和 uwsgi 上配置的,因此看起来别无选择,只能让它在每个页面上运行 geoip,然后只在需要时收集和使用变量。

从性能的角度来看,我宁愿拥有它,所以我只在需要时请求 geoip,将其缓存在 cookie 或会话中,然后不再请求它以加快站点速度。

有人能告诉我这是否可能吗?

4

2 回答 2

4

从性能的角度来看,我宁愿拥有它,所以我只在需要时请求 geoip,将其缓存在 cookie 或会话中,然后不再请求它以加快站点速度。有人能告诉我这是否可能吗?

是的,这是可能的。但从性能的角度来看,您不必担心,因为 geoip 数据库存储在内存中(在读取配置阶段),而 nginx 的查找速度非常快。

无论如何,如果你愿意,你可以使用类似的东西:

set $country $cookie_country;

if ($country == '') {
    set $country $geoip_country_code;
    add_header Set-Cookie country=$geoip_country_code; 
}

uwsgi_param GEOIP_COUNTRY $country;
于 2012-11-23T19:11:13.933 回答
-2

不,您不能让 nginx 仅按需执行 GeoIP 查找。由于您定义了geoip_countrygeoip_city指令,无论以后是否使用答案,nginx 都会从 GeoIP 数据库请求数据。但是您完全可以在没有 nginx 的情况下获取 GeoIP 数据,即直接使用您的应用程序。看看python geoip lib:http ://dev.maxmind.com/geoip/downloadable#Python-5

于 2012-11-23T14:10:24.227 回答