Centos7 Nginx GeoIP模块

nginx GeoIP模块 ,指定地区跳转,返回不同页面等。

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

编译–with-http_geoip_module模块

先看nginx有没有编译geoip模块,如果有就直接修改就行,没有就得先安装。

nginx -V
#查看目前的nginx相关配置(主要查看有没有Geoip模块)

#下载安装Geoip模块
yum -y install geoip-devel  #CentOS系统
 
这会自动安装到/usr/share/GeoIP文件夹下,这个安装的并不一定是最新的,我们就更新下
 
mv /usr/share/GeoIP/GeoIP.dat /usr/share/GeoIP/GeoIP.dat_bak   #备份下
 
cd /usr/share/GeoIP  #进文件夹
 
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz  #下载最新数据库
如果下载没有报错404的话,自己找找。我也在找。
gunzip GeoIP.dat.gz  #解压出来

cd /data/installation/nginx1.17.6

./configure --prefix=/data/nginx --user=root --group=root --with-threads --with-http_realip_module --with-http_ssl_module --with-stream --with-stream_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_slice_module  --add-module=../installation/echo-nginx-module-0.61
make -j2
cp -f objs/nginx /data/nginx/sbin/
make upgrade
#走完之后,用nginx -V看看里面有没有geoip的模块,如果有就是成功了。
nginx -V

修改Nginx配置

http或server端中添加(一般都是http端中)

写法①

geoip_country /usr/share/GeoIP/GeoIP.dat;   #GeoIP所在目录
map $geoip_country_code $allowed_country {  #变量判断
default yes;   #允许
CN no;  #区域不允许,这个CN就是代表中国,如果是多个地区,就是CN下面加就行
}

写法②

geoip_country GeoIP/GeoIP.dat;
 
geoip_city GeoIP/GeoLiteCity.dat;
server端

location / {
root /data/wwwroot/test;  #网站目录
if ($allowed_country = no) {  #这里的no,就是上面html里面CN on,就是判断no区域
 
#if ($allowed_country = no) 也可以用if ($geoip_country_code = CN) 来代替,如果是多个区域就在CN后面几个|然后加区域代码
return 403;   #返回403提示
return http://域名; #跳转到其他人网站去 ,return也可以用rewrite,具体看自己网站的配置文件怎么设置的
root /data/wwwroot/test1;  #跳转到自己服务器的另外一个文件夹下面去
}
}

server区块添加显示IP国家名国家码城市信息

    location /myip {
        default_type text/plain;
        return 200 "$remote_addr $geoip_country_name $geoip_country_code $geoip_city";
    }

浏览器语言判断(自行选择)

if (navigator.language)
var language = navigator.language;
else
var language = navigator.browserLanguage;
if(language.indexOf('zh') > -1)document.location.href = 'cn'; #判断浏览器语言,后面的cn是网站下的耳机目录,这个随便自己修改,改成跳转网址都行
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大锅霍皮久

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值