Nginx结合GeoIP库

Posted T

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx结合GeoIP库相关的知识,希望对你有一定的参考价值。

1. 编译nginx时带上geoip模块

# wget http://nginx.org/download/nginx-x.x.x.tar.gz
# tar zxvf nginx-x.x.x.tar.gz
# cd nginx-x.x.x
# ./configure --with-http_geoip_module     其余编译选项请自行填补
# make; make install

 

2. 下载可以读取GeoIP数据库的工具

# wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
# tar -zxvf GeoIP.tar.gz
# cd GeoIP-1.4.8    注意这个解压出的版本随时在变,我解压时,是1.4.8版本的
# ./configure
# make; make install

上面的操作,将工具安装到了/usr/local/lib目录下,我们需要让其生效。

# echo /usr/local/lib > /etc/ld.so.conf.d/geoip.conf
# ldconfig

 

3. 下载GeoIP数据库

# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
# gunzip GeoIP.dat.gz
# mkdir /usr/local/share/GeoIP
# mv GeoIP /usr/local/share/GeoIP/

 

4. 配置nginx,使其能够使用GeoIP库

# vi /etc/nginx/nginx.conf

geoip_country /usr/local/share/GeoIP/GeoIP.dat;

fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
...

if ($geoip_country_code = CN) {
    root /data/www/;
}

 

上面只是简单的使用,更多的知识需要根据实际的情况来自行修改。所以多多看看。

官方站点:http://nginx.org/en/docs/http/ngx_http_geoip_module.html

 

以上是关于Nginx结合GeoIP库的主要内容,如果未能解决你的问题,请参考以下文章

使用 nginx 运行 geoip 模块

nginx GeoIP 缓存密钥

如何在生产环境中运行的 Nginx 上安装 Geoip2 模块?

nginx geoip 错误处理

NGINX GeoIP 和在服务器级别检测移动设备

无法启用 geoip 阻止 nginx - [emerg] 未知指令“geoip_country”