通过apt 安装的nginx如何使用geoip2模块,并限制国外访问
时间:2024-3-24 17:29 作者:Anglei 分类: WEB应用
要在通过apt安装的nginx上安装geoip2,你需要使用apt来安装nginx-extras包,因为geoip2模块包含在该包中。以下是安装步骤:
更新你的包索引:
sudo apt update
安装nginx-extras:
sudo apt install nginx-extras
确认geoip2模块已经安装,并且在nginx配置中可以使用:
nginx -V 2>&1 | grep --color -o '--with-http_geoip2_module'
如果上述命令输出包含--with-http_geoip2_module字样,则表示geoip2模块已成功安装。
IP库下载
geoip2 module仅是一个模块程序并不包含IP库数据,所以还需要单独下载IP库。IP没有好的规则可以直接判断是哪个国家的,所以只能使用IP库进行判断,这个库可以去maxmind官网免费下载,但要先注册账号。
https://www.maxmind.com/en/geoip2-databases?utm_source=kb&utm_medium=kb-link&utm_campaign=kb-create-account
或者从本站分享的连接下载,GeoLite2-Country.mmdb ip库文件需要下载完后传到服务器上

微信扫描二维码或搜索【智慧科技新视角】关注,聊天窗口发送【验证码】三个字获取(免费)
nginx配置IP库
在nginx 的http 中加入ip库及字典变量配置
#从geoip2文件中加载数据,1000分钟自动reload一次数据
geoip2 /home/geoip2/GeoLite2-Country.mmdb {
auto_reload 1000m;
$geoip2_data_country_code country iso_code;
}
# 如果是CN IP返回yes,其它国家都返回no
map $geoip2_data_country_code $allowed_country {
default no;
CN yes;
}
添加IP拦截逻辑
可以把以下规则放到一个文件中,其它server引用该配置: deny-ip.conf
#如果变量值为no,则直接返回403
if ($allowed_country = no) {
return 403;
}
在server中引用以上规则(哪个server要拦截,哪个server去加上就行了,http、https要分别添加)
include /etc/nginx/deny-ip.conf;
好了,这样就完成了。然后执行
systemctl restart nginx

推荐阅读:
![]() 路过(0) |
![]() 雷人(0) |
![]() 握手(3) |
![]() 鲜花(0) |
![]() 鸡蛋(0) |