«

通过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

本文完结,相关标签: nginx 限制 geoip

 版权所有:Anglei
 文章标题:通过apt 安装的nginx如何使用geoip2模块,并限制国外访问
 除非注明,本站文章如未特殊说明均为 MAXADA社区知识库 原创,且版权所有,请勿用于任何商业用途。

推荐阅读:

看完后感想如何?

路过(0)

雷人(0)

握手(3)

鲜花(0)

鸡蛋(0)
分享到: