这是我正在使用的模块:http://wiki.nginx.org/HttpGeoipModule
从我所看到的,因为它是在nginx配置和uwsgi上配置的,所以看起来别无选择,只能让它在每个页面上运行geoip,然后只在需要时收集和使用变量。
从性能的角度来看,我宁愿拥有它,所以我只在需要时请求geoip,将其缓存在cookie或会话中,然后不再请求它来加速网站。
有人能告诉我这是否可行?
答案 0 :(得分:2)
从性能的角度来看,我宁愿拥有它,所以我只在需要时请求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;
答案 1 :(得分:-2)
不,您不能让nginx仅按需执行GeoIP查找。由于您定义了 geoip_country 或 geoip_city 指令,因此nginx将从GeoIP数据库请求数据,无论答案是否在以后使用。但是你可以在没有nginx的情况下获取GeoIP数据,即直接使用你的应用程序。看一下python geoip lib:http://dev.maxmind.com/geoip/downloadable#Python-5