Tonfay的gravatar头像
Tonfay 2016-10-27 09:53:08
nginx实现自动获取用户ip.经纬度.省市

Linux安装GeoIP 
附件地址:链接: https://pan.baidu.com/s/1dFl1zZN 密码: x37s 
./configure 
make 
make install

如果原已经安装好的nginx,现在需要添加一个未被编译安装的模块

1.nginx -V 可以查看原来编译时都带了哪些参数

原来的参数: 
–prefix=/app/nginx

添加后的参数: 
./configure –prefix=/app/nginx –with-http_geoip_module

2.编译 
make (千万不要make install,否则就是覆盖安装了)

3.备份原有./nginx

4.把编译完的nginx(在安装目录的objs文件夹下)二进制文件,复制到/usr/local/nginx/sbin/ 
cp -rf ./objs/nginx /app/nginx/sbin/

5../nginx -V 测试成功

在操作过程中遇到错误: 
/usr/local/nginx/sbin/nginx: 
error while loading shared libraries: libGeoIP.so.1: cannot open shared object file: No such file or directory

解决方案: 
查看一下类库路径 
ldd /usr/local/nginx/sbin/nginx 
结果:

nginx实现自动获取用户ip.经纬度.省市

ln -s /usr/local/lib/libGeoIP.so* /lib64/

ldconfig 
/usr/local/nginx/sbin/nginx -V 牛逼解决

附加个使用说明:

http {
...
    geoip_city    /var/GeoIP/GeoLiteCity.dat;#geoip的库文件
    #handler中可以接收header中的值(Geo-City的key 等)
    proxy_set_header    Geo-Country-Code $geoip_city_country_code;
    proxy_set_header    Geo-Region $geoip_region;
    proxy_set_header    Geo-City $geoip_city;
    proxy_set_header    Geo-Postal-Code $geoip_postal_code;
    proxy_set_header    Geo-Continent-Code $geoip_city_continent_code;
    proxy_set_header    Geo-Latitude $geoip_latitude;
    proxy_set_header    Geo-longitude $geoip_longitude;
...
    server{
    ...
        #下面代码可以放到 location模块下
        add_header geoip_city $geoip_city;
        add_header geoip_city_country_code $geoip_city_country_code;
        add_header geoip_region $geoip_region;
        add_header geoip_postal_code $geoip_postal_code;
        add_header geoip_city_continent_code $geoip_city_continent_code;
        add_header geoip_latitude $geoip_latitude;
        add_header geoip_longitude $geoip_longitude;
    ...
    }
}

·$geoip_country_code - 两个字母的国家代码,如:"RU", "US"。
·$geoip_country_code3 - 三个字母的国家代码,如:"RUS", "USA"。
·$geoip_country_name - 国家的完整名称,如:"Russian Federation", "United States"(如果可用)。
·$geoip_region - 地区的名称(类似于省,地区,州,行政区,联邦土地等),如:"Moscow City", "DC"(如果可用)。
·$geoip_city - 城市名称,如"Moscow", "Washington"(如果可用)。
·$geoip_postal_code - 邮政编码(如果可用)。
·$geoip_city_continent_code(如果可用)。
·$geoip_latitude - 所在维度(如果可用)。
·$geoip_longitude - 所在经度(如果可用)。

nginx实现自动获取用户ip.经纬度.省市

附件: 

GeoLiteCity.dat 
及省市区字典sql 
https://pan.baidu.com/s/1o8B73cQ

附一篇不错的文章 
http://www.52os.net/articles/configure-nginx-using-geoip-allow-whitelist.html


打赏
最近浏览
白吃水泥  LV7 2020年9月30日
安安an  LV17 2019年7月23日
cs383450139 2019年3月22日
暂无贡献等级
故事_sun  LV26 2018年3月1日
wgc_jy  LV21 2018年2月2日
上世纪风景  LV11 2018年1月12日
weienqing  LV17 2017年11月15日
tuyong  LV7 2017年10月16日
203778513  LV9 2017年9月13日
马小跳  LV12 2017年8月30日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友