Nginx集成GeoIP2模块实现地区识别与屏蔽

前文:

最近在研究nginx如何集成geo模块来实现IP自动识别从而进行地区屏蔽的内容。但是度娘N篇文章,发现大家都在转载很久之前的东西。geo1.0官方都不提供下载了,不知道那些小伙伴是怎么实现模块按照和IP库下载的。这个就不互相伤害了,如何集成最新版的geoip2直接继续浏览即可。

1.nginx下载最新版

   过程略。

2.下载依赖软件

2.1 geoip2核心识别库

    安装步骤:

wget https://github.com/maxmind/libmaxminddb/releases/download/1.3.2/libmaxminddb-1.3.2.tar.gz
tar -xzf libmaxminddb-1.3.2.tar.gz
cd libmaxminddb-1.3.2
./configure
make
make check
sudo make install
sudo ldconfig

2.2 geoip2-nginx模块

   下载地址:

   https://github.com/TravelEngineers/ngx_http_geoip2_module

   nginx集成步骤:

./configure --prefix=/appx/nginx-geoip --with-http_stub_status_module --with-pcre=/appx/nginx-geoip/source/pcre-8.38 --with-http_realip_module --with-http_gzip_static_module --with-http_ssl_module --with-openssl=/appx/nginx-geoip/source/openssl-1.0.2o --add-module=/appx/nginx-geoip/source/ngx_http_geoip2_module-3.2
make
make install

  geoip2 IP地址库下载:

  下载地址:https://dev.maxmind.com/geoip/geoip2/geolite2/

   注意GeoLite2 City 和GeoLite2 Country 2个文件都要下载。

   下载选择:MaxMind DB binary, gzipped

   样例配置(nginx):

   

#IP地址库解析映射 
geoip2 /app/nginx-geoip/geoip_db/GeoLite2-Country_20190521/GeoLite2-Country.mmdb {
        auto_reload 5m;
        $geoip2_metadata_country_build metadata build_epoch; #变量名可以自定义
        $geoip2_country_code default=US country iso_code;
        $geoip2_country_name country names zh-CN;
    }

    geoip2 /app/nginx-geoip/geoip_db/GeoLite2-City_20190521/GeoLite2-City.mmdb {
         $geoip2_city_name default=ShangHai city names zh-CN;
         $geoip2_continent_code continent code;
    }


 location /myip {
          default_type text/plain;
          return 200 "$remote_addr $geoip2_city_name $geoip2_country_code $geoip2_continent_code";
        }

 2.3 进阶介绍

   变量$geoip2_continent_code 可以自己指定任意名称,

   注意  $geoip2_country_name country names zh-CN;

  代表寻找country_name 这个字段,且是在中文名称的IP库中寻找。

  如果某个字段并非多语言支持的,则不能写zh-CN。 

  所有字段名称可以在CSV格式的文件中找到,如果你要取city_code 当前IP这个字段的值,则可以按照、如下设置获取:

 $geoip2_city_code city code;

 COUNTRY和CITY库里面的字段不是全部一样,感兴趣的可以下载CSV格式GEOIP库进行研究。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值