首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Nginx geo ip模块不工作,找不到调试方法

Nginx geo ip模块不工作,找不到调试方法
EN

Stack Overflow用户
提问于 2014-08-10 16:28:22
回答 2查看 3.3K关注 0票数 3

我在这里遵循nginx geoip配置指南http://www.howtoforge.com/nginx-how-to-block-visitors-by-country-with-the-geoip-module-debian-ubuntu

我写的东西是这样的

代码语言:javascript
运行
复制
geoip_country /path/to/GeoIP.dat;

我非常确定.dat文件就在那里,并且nginx有权限访问它。但是,geoip_country_code变量似乎没有设置。

我尝试了许多调试方法,比如

代码语言:javascript
运行
复制
add_header X-debug-message "$geoip_country_code";

代码语言:javascript
运行
复制
log_format debug "$geoip_country_code"

对于header,nginx返回空结果。而对于日志格式,它简单地不记录任何内容。我敢打赌,geoip_country_code甚至没有定义,所以nginx无法处理它或其他什么。

我试图读取服务器错误日志,但是,那里什么都没有(没有关于geoip和未定义的变量)。这有点烦人,我怎么知道nginx和geoip模块发生了什么?

EN

回答 2

Stack Overflow用户

发布于 2014-08-11 01:03:45

在查看syslog之后,我注意到它是geoip模块中的一个段错误

代码语言:javascript
运行
复制
Aug 10 12:55:39 web kernel: [1183521.905522] nginx[30201]: segfault at 7fa773b7f2ce ip 00007fa772bc5478 sp 00007fffe4adc570 error 4 in libGeoIP.so.1.6.0[7fa772bbe000+2d000]

所以,我打赌它要么是由geoip模块引起的,要么是由损坏的GeoIP.dat文件引起的。看过这个文件后,我发现它已经损坏了。然后我再次下载该文件,现在一切正常。

票数 2
EN

Stack Overflow用户

发布于 2018-06-27 15:42:35

一种调试方法是检查环境中的GEOIP变量,例如,在PHP中查看$_SERVER数组,或者尝试getenv(GEOIP_COUNTRY_CODE)

确保在/etc/nginx/fastcgi_params中定义变量

代码语言:javascript
运行
复制
### SET GEOIP Variables ###
fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;

source

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25226873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档