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

    xiaoxiao2023-11-16  216

    前文:

    最近在研究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库进行研究。

    最新回复(0)