1、安装 libmaxminddb 库
apt update
apt install libmaxminddb0 libmaxminddb-dev mmdb-bin
上面安装的软件包是:
- libmaxminddb0 libmaxminddb-dev 是MaxMind地理定位数据库
- mmdb-bin – 二进制。 从命令行调用的程序。 使用此命令手动定位 IP
安装参考
2、下载geoip2 模块
cd /var/
git clone https://github.com/leev/ngx_http_geoip2_module.git
ngx_http_geoip2_module
3、下载安装nginx将 geoip2 构建为动态模块
wget http://nginx.org/download/nginx-1.23.3.tar.gz
tar zxvf nginx-1.23.3.tar.gz
cd nginx-1.23.3
./configure --prefix=/usr/local/nginx --user=www --group=www --with-pcre --with-http_stub_status_module --with-http_ssl_module --with-stream --add-module=/var/ngx_http_geoip2_module
make
make install
nginx下载
4、获取最新数据库
在maxmind注册账号,然后按照下图下载数据文件
- 将下载的eoLite2-Country.mmdb文件放在/usr/share/GeoIP/文件夹里
数据文件也可以在 这个网站下载
5、在nginx里配置
在nginx.conf的 http 里添加 几行,定义数据库文件位置
geoip2 /usr/share/GeoIP/GeoLite2-Country.mmdb {
auto_reload 5m;
$geoip2_data_country_code country iso_code;
}
map $geoip2_data_country_code $allowed_country {
default yes;
CN no;
}
通过Nginx来实现禁止国外IP访问网站,在server 中的 location 下添加条件
if ($allowed_country = yes) {
return 404;
}
最后用海外节点和本地分别访问就可以看到,海外访问就是404页面,本地可以正常访问,也可以在nginx访问日志里看到
参考文章