nginx判定国家ip访问网站
我们可以通过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访问网站的更多相关文章
- Nginx如何设置禁止IP访问网站
需要禁止IP访问网站.在相关的server中设置相关的限制即可.
- nginx拒绝国外IP访问
nginx拒绝国外IP访问方法很多,比如iptables,geoip模块,域名解析等等.这些方法不会相互冲突,可以结合起来一起使用. 今天来教大家利用两个小方法解决 域名解析禁止掉海外IP访问网站. ...
- 通过ASP禁止指定IP和只允许指定IP访问网站的代码
过ASP禁止指定IP和只允许指定IP访问网站的代码,需要的朋友可以参考下. 一.禁止指定IP防问网站,并执行相应操作: 代码如下: <% Dim IP,IPString,VisitIP '设置I ...
- vue配置手机通过IP访问,Win10让局域网内其他电脑通过IP访问网站的方法
vue配置手机通过IP访问config/index.js// Various Dev Server settings host: '0.0.0.0', // can be overwritten by ...
- windows/linux VPS云服务器限制IP访问,限制别人的IP访问网站方法
服务器VPS云服务器如何限制IP访问,限制别人的IP访问网站的方法 windows主机IIS限制IP访问方法:首先打开IIS点击“网站”,右键属性,(如果仅给单个网站设置,请选择下边的站点,点右键“属 ...
- 在虚拟机上的关于Apache(阿帕奇)(3)基于IP访问网站
这篇随笔是基于IP访问网站,和后面两篇文章基于域名和基于端口一起练习效果更好 基于IP(记得下载httpd服务) 首先使用nmtui命令为网卡添加多个ip地址 输入命令:nmtui 进入下面这个界 ...
- 使用 Nginx 阻止恶意 IP 访问
找到具有明显特征的访问记录,比如: /Dec/::: +] "-" "Ouija_x.86/2.0" "-" 也许是某个开源框架的漏洞,执行 ...
- 使用nginx配置域名及禁止直接通过IP访问网站
前段时间刚搭建好个人网站,一直没有关注一个问题,那就是IP地址也可以访问我的网站,今天就专门研究了一下nginx配置问题,争取把这个问题研究透彻. 1. nginx配置域名及禁止直接通过IP访问 先来 ...
- nginx限制IP访问网站
需求:网站只允许指定IP访问,其他访问一律拒绝server { listen 80; server_name a.com; index index.html index.htm index.php; ...
随机推荐
- CVPR2020文章汇总 | 点云处理、三维重建、姿态估计、SLAM、3D数据集等(12篇)
作者:Tom Hardy Date:2020-04-15 来源:CVPR2020文章汇总 | 点云处理.三维重建.姿态估计.SLAM.3D数据集等(12篇) 1.PVN3D: A Deep Point ...
- CopyOnWriteArrayList线程安全的集合
CopyOnWriteArrayList是线程安全的集合.本身就是安全的,同时只能被一个进程所访问. 属于JUC并发编程里面的内容. public static void main(String[] ...
- Android应用架构分析
一.res目录: 1.属性:Android必需: 2.作用:存放Android项目的各种资源文件.这些资源会自动生成R.java. 2.1.layout:存放界面布局文件. 2.2.strings.x ...
- Delphi TMemo 可以显示、编辑多行文本
多行编辑框组件(TMemo)TMemo组件可以显示.编辑多行文本,是一个标准的Windows多行编辑组件.对一些比较多的文本内容可以利用TMemo组件来显示.编辑. 1.TMemo组件的典型用法 TM ...
- window 10 安装paddlepaddle 1.7 GPU版本
window 10 安装paddlepaddle 1.7 GPU版本 1)更新显卡驱动 2)安装cuda 10 https://developer.nvidia.com/cuda-10.0-downl ...
- vs 类型定义及语句,随机数
1 类型定义: 1)小数: 类型 变量名 赋值 decimal d : d=1.2m float ...
- vs 基础
1 写入 读取: 1) 写入:Console.Write("hello china") 光标紧跟 ...
- Linux下nginx自启动配置
1.在linux系统的/etc/init.d/目录下创建nginx文件 vim /etc/init.d/nginx 在脚本中添加一下命令(内容主要参考官方文档) #!/bin/sh # # nginx ...
- 报错:require_once cannot allocate memory----php,以前自己弄的稍微有点特殊的开发环境
最近出现过一个问题,值得记录 类似于这样的报错的问题: Warning: require_once(/www/app/somecomponent.php): failed to open stream ...
- Git基本操作和使用
基本命令: git config git init git clone git remote git fetch git commit git rebase git push 本地基本操作: git ...