在 Nginx 和 UWSGI 中使用 GeoIP 模块
Posted
技术标签:
【中文标题】在 Nginx 和 UWSGI 中使用 GeoIP 模块【英文标题】:Using the GeoIP module with Nginx and UWSGI 【发布时间】:2012-11-22 11:48:24 【问题描述】:我正在尝试集成这个模块,但它有点超出我的能力:
http://wiki.nginx.org/HttpGeoipModule
在我的 nginx 配置中,我有这个:
geoip_country /usr/share/GeoIP/GeoIP.dat;
我将它添加到构建选项中并包含在使用它所需的库中,这一切似乎都很好。我正在使用在 Nginx 和 UWSGI 上运行的 Python,我不知道下一步要在我的页面上实际检索 geoip 的结果。
我在 nginx 留言板上发布了这个没有运气,所以如果有人可以给我任何帮助,我真的很感激
【问题讨论】:
【参考方案1】:现在您可以设置 nginx 以通过自定义 HTTP 标头将 GeoIP 数据传递到您的 CGI 应用程序,例如:
proxy_set_header X-GeoIP-Country $geoip_country_name;
proxy_set_header X-GeoIP-City $geoip_city;
CGI 应用程序将接收这些自定义标头以及客户端提供的标准 HTTP 标头。
【讨论】:
感谢您的回复。就我而言,我的 CGI 应用程序是 UWSGI 吗? @user1738522 是的,在您的情况下它是 UWSGI,尽管该方法适用于任何 CGI 应用程序。唯一需要注意的是,上面的示例假设 nginx 和 CGI 应用程序通过 tcp-sockets 链接(即 proxy_pass nginx 指令用于将数据传递给 CGI 应用程序)。如果您直接使用 FastCGI 协议(即使用 fastcgi_pass nginx 指令),则代码应为:fastcgi_param GeoIP_Country $geoip_country_name; fastcgi_param GeoIP_City $geoip_city;
uWSGI一般使用uwsgi
协议,那一定是uwsgi_param
。
我在调用 req.headers['X-GeoIP-Country'] 时总是不确定,我使用 express node js ***.com/questions/51265803/…以上是关于在 Nginx 和 UWSGI 中使用 GeoIP 模块的主要内容,如果未能解决你的问题,请参考以下文章
带有 uWSGI 的 Django 中 Geoip2() 上的“[Errno 12] 无法分配内存”