我们可以通过GeoIP模块和MaxMind免费数据库来实现
MaxMind具有新版本的数据库GeoLite2,它仅支持CSV和mmdb格式。
可以支持mngx_http_geoip2_modulemdb格式,但是当我检查Nginx by时nginx -V,我发现它是使用编译的with-http-geoip_module=dynamic
因为我的nginx版本是低版本

检查geoip模块是否安装

nginx -V

下载GeoIP MaxMind GeoCity和GeoCountry数据库

我们可以从MaxMind下载最新的数据库。
https://www.maxmind.com/en/accounts/258407/geoip/downloads
但是,如开头所述,最新的数据库仅具有CSV和mmdb格式。

mkdir /etc/nginx/geoip -p
cd /etc/nginx/geoip
下载 GeoLite2-Country-CSV_20200324.zip

我发现geolite2legacy可以GeoLite2数据库转换为旧格式。
geolite2legacy使用python做到这一点。在我的环境中,我需要安装ipaddr和pygeoip来执行它。

apt install python-pip
pip install pygeoip
pip install ipaddr

克隆geolite2legacy,并且将csv格式的GeoLite2数据库转换为旧格式

git clone https://github.com/sherpya/geolite2legacy.git
cd geolite2legacy
./geolite2legacy.py -i ../GeoLite2-Country-CSV_20200324.zip -f geoname2fips.csv -o GeoIP.dat

将GeoIP.dat迁移到自定义目录

mv GeoIP.dat /etc/nginx/geoip/

配置nginx

打开/etc/nginx/nginx.conf并将其放置http{}在任何_包含_行之前的块中。

        geoip_country /etc/nginx/geoip/GeoIP.dat;
map $geoip_country_code $redirect_country {
default no;
CN yes;
}

CN为国家编码,可以在https://dev.maxmind.com/geoip/legacy/codes/iso3166/中查看各国家的国家编码


我们这里设置CN为yes, 现在,我们得到了$redirect_country变量,但实际上并没有重定向。

在 server{} 设置rewrite跳转

if ($redirect_country = yes) {
rewrite ^ https://www.lightda.no$request_uri break;
}

这里是定义$redirect_country = yes 则跳转到其他页面,相反如果不是yes则继续访问该网站.

nginx判定国家ip访问网站的更多相关文章

  1. Nginx如何设置禁止IP访问网站

    需要禁止IP访问网站.在相关的server中设置相关的限制即可.

  2. nginx拒绝国外IP访问

    nginx拒绝国外IP访问方法很多,比如iptables,geoip模块,域名解析等等.这些方法不会相互冲突,可以结合起来一起使用. 今天来教大家利用两个小方法解决  域名解析禁止掉海外IP访问网站. ...

  3. 通过ASP禁止指定IP和只允许指定IP访问网站的代码

    过ASP禁止指定IP和只允许指定IP访问网站的代码,需要的朋友可以参考下. 一.禁止指定IP防问网站,并执行相应操作: 代码如下: <% Dim IP,IPString,VisitIP '设置I ...

  4. vue配置手机通过IP访问,Win10让局域网内其他电脑通过IP访问网站的方法

    vue配置手机通过IP访问config/index.js// Various Dev Server settings host: '0.0.0.0', // can be overwritten by ...

  5. windows/linux VPS云服务器限制IP访问,限制别人的IP访问网站方法

    服务器VPS云服务器如何限制IP访问,限制别人的IP访问网站的方法 windows主机IIS限制IP访问方法:首先打开IIS点击“网站”,右键属性,(如果仅给单个网站设置,请选择下边的站点,点右键“属 ...

  6. 在虚拟机上的关于Apache(阿帕奇)(3)基于IP访问网站

    这篇随笔是基于IP访问网站,和后面两篇文章基于域名和基于端口一起练习效果更好 基于IP(记得下载httpd服务) 首先使用nmtui命令为网卡添加多个ip地址  输入命令:nmtui  进入下面这个界 ...

  7. 使用 Nginx 阻止恶意 IP 访问

    找到具有明显特征的访问记录,比如: /Dec/::: +] "-" "Ouija_x.86/2.0" "-" 也许是某个开源框架的漏洞,执行 ...

  8. 使用nginx配置域名及禁止直接通过IP访问网站

    前段时间刚搭建好个人网站,一直没有关注一个问题,那就是IP地址也可以访问我的网站,今天就专门研究了一下nginx配置问题,争取把这个问题研究透彻. 1. nginx配置域名及禁止直接通过IP访问 先来 ...

  9. nginx限制IP访问网站

    需求:网站只允许指定IP访问,其他访问一律拒绝server { listen 80; server_name a.com; index index.html index.htm index.php; ...

随机推荐

  1. json格式的文件操作

    1.字典转换为字符串(json.dumps) jsongeshi={"name":"yajuan","age":"10" ...

  2. YII基础二

    YII多表关联查询 ->select("{{%relation_detail}}.name") ->from("{{%user}}") ->l ...

  3. 关于连接内部服务器以及redis缓存基本操作

    1.linux命令行远程连接内部服务器 ssh -p 6637 mndevops@172.18.11.183 //建立连接命令 端口号和用户名+ip 输入密码 ./redis-cli 进入redis数 ...

  4. Visual C++ 6.0踩坑记录---在Win10下安装Visual C++ 6.0安装成功后点击“打开”按钮闪退问题

    前言: 为了更好的学习C及C++,前段时间下载了Microsoft Visual C++ 6.0(以下简称VC6),原因是VC6具有查看反汇编代码.监视内存.寄存器等功能,并且因为本人正在学习滴水逆向 ...

  5. [总结]Floyd算法及其应用

    目录 一.Floyd算法 二.Floyd算法的应用 1. 传递闭包 例1:P2881 [USACO07MAR]排名的牛Ranking the Cows 例2:P2419 [USACO08JAN]牛大赛 ...

  6. Web三维编程入门总结之一:WebGL与Threejs入门知识

    /*在这里对这段时间学习的3D编程知识做个总结,以备再次出发.计划分成“webgl与three.js基础介绍”.“面向对象的基础3D场景框架编写”.“模型导入与简单3D游戏编写”三个部分,其他零散知识 ...

  7. 用python爬取之后发现果然如此,都说知乎的小姐姐漂亮

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http ...

  8. niuke---勾股定理

    勾股定理------: 当其中一个数a大于1并且为奇数时即a=2*n+1, 那么另外两个数分别为 b=2*n*n+2*n;   c=b+1; 当a为大于等于4的偶数时,即a=2*n时,那么另外两个数分 ...

  9. Element里el-badge在el-tab里视图不被渲染问题

    我们发现:el-badge绑定的变量是有数据的,但是界面上就是不渲染. 这个时候执行getTodo发现数据已经打印出来,当是视图未发送变化.于是查阅资料:vm.$forceUpdate()示例:迫使 ...

  10. 【5min+】为你的.NET应用进行一次全方位体检

    系列介绍 [五分钟的dotnet]是一个利用您的碎片化时间来学习和丰富.net知识的博文系列.它所包含了.net体系中可能会涉及到的方方面面,比如C#的小细节,AspnetCore,微服务中的.net ...