我不会接受我不要的未来
哪怕是命中注定

centos nginx安装geoip2

安装libmaxminddb

libmaxminddb库提供了一个用于读取MaxMind DB文件的C库,包括MaxMind的GeoIP2数据库

wget https://github.com/maxmind/libmaxminddb/releases/download/1.3.2/libmaxminddb-1.3.2.tar.gz
mv libmaxminddb-1.3.2.tar.gz /usr/local/
cd /usr/local/
tar -zxvf libmaxminddb-1.3.2.tar.gz
cd libmaxminddb
./configure
make check
make && make install

下载地址:https://github.com/maxmind/libmaxminddb

安装ngx_http_geoip2_module

wget https://github.com/leev/ngx_http_geoip2_module/archive/3.2.tar.gz -o ngx_http_geoip2_module-.tar.gz

cd /usr/local/
tar -zxvf ngx_http_geoip2_module-.tar.gz
cd ngx_http_geoip2_module
./configure
make check
make && make install

 

加载加载geoip2模块so

ldconfig -v | grep GeoIP

编译nginx模块

./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_mp4_module --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre=/usr/local/pcre/pcre-8.42 --with-zlib=/usr/local/zlib/zlib-1.2.11/ --with-openssl=/usr/local/openssl/openssl-1.1.0b --add-module=/usr/local/ngx_cache_purge-master --with-http_geoip_module
--add-dynamic-module=/path/to/ngx_http_geoip2_module

此时可建立一个动态模块或者静态模块

构建动态模块(nginx 1.9.11):

./configure --add-dynamic-module=/path/to/ngx_http_geoip2_module
make
make install

这将生成objs/ngx_http_geoip2_module.so。如果您愿意,可以手动将其复制到nginx模块路径。

将以下行添加到nginx.conf:

load_module modules/ngx_http_geoip2_module.so;

作为静态模块构建

./configure --add-module=/path/to/ngx_http_geoip2_module
make
make install

静态编译与动态编译的区别:

1、动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。
所以其优点一方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。
缺点一是哪怕是很简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文件就不能运行。
2、静态编译就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。所以其优缺点与动态编译的可执行文件正好互补。

下载Maxmind GeoLite2数据库(可选)

GeoLite2 City GeoLite2 Country

使用示例:

http {
    ...
    geoip2 /etc/maxmind-country.mmdb {
        auto_reload 5m;
        $geoip2_metadata_country_build metadata build_epoch;
        $geoip2_data_country_code default=US source=$variable_with_ip country iso_code;
        $geoip2_data_country_name country names en;
    }

    geoip2 /etc/maxmind-city.mmdb {
        $geoip2_data_city_name default=London city names en;
    }
    ....

    fastcgi_param COUNTRY_CODE $geoip2_data_country_code;
    fastcgi_param COUNTRY_NAME $geoip2_data_country_name;
    fastcgi_param CITY_NAME    $geoip2_data_city_name;
    ....
}

stream {
    ...
    geoip2 /etc/maxmind-country.mmdb {
        $geoip2_data_country_code default=US source=$remote_addr country iso_code;
    }
    ...
}

数据库和安装包下载地址:

https://github.com/leev/ngx_http_geoip2_module

https://github.com/maxmind/libmaxminddb

赞(0)
未经允许不得转载:技术搬运工 » centos nginx安装geoip2
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

我们不生产技术 我们只是技术的搬运工