当前位置: 首页 > 工具软件 > open-geoip > 使用案例 >

Nginx+GeoIP2限制区域用户访问(防踩坑)

钱季
2023-12-01

注:阅读本文需要有一定Linux知识的技术人员,写的不好,小白可能看不懂,十分抱歉哈。

1、系统环境

CentOS 7.x  

Nginx 1.18.0 及Nginx1.20.0,其他版本未测试,以上两个版本均正常使用。

2.安装依赖

安装Geoip2依赖:

$ cd /data

$ wget https://github.com/maxmind/libmaxminddb/releases/download/1.3.2/libmaxminddb-1.3.2.tar.gz

$ tar -zxvf libmaxminddb-1.3.2.tar.gz

$ cd libmaxminddb-1.3.2

$ ./configure && make && make install

$ echo /usr/local/lib >> /etc/ld.so.conf.d/local.conf

$ ldconfig

或者yum安装:yum install libmaxminddb-devel -y

3.下载Geoip2的nginx模块

wget https://github.com/leev/ngx_http_geoip2_module/archive/3.3.tar.gz

下载对应nginx的编译包(可从nginx官网下载)

编译的时候,添加这段信息(注意后面是你的geoip2模块地址):

--add-module=/data/nginx/nginx-geoip2/ngx_http_geoip2_module 

4.GeoIP2数据库下载

从官网注册账号:GeoLite2 Sign Up | MaxMind

之后下载GeoIP数据文件,放置到/usr/share/GeoIP/目录下或者其他目录亦可

5.nginx配置

注:/usr/share/GeoIP/GeoLite2-Country.mmdb 是GeoIP2数据库路径

限制某个国家用户访问:

http {

.........

geoip2 /usr/share/GeoIP/GeoLite2-Country.mmdb {  

$geoip2_data_country_code country iso_code;

}

map $geoip2_data_country_code $allowed_country {

default yes;

CN no;

}

.........

}

server {

.........

if ($allowed_country = no) {

return 403;

}

.........

}

限制某个城市用户访问:

http {

.........

geoip2 /usr/share/GeoIP/GeoLite2-City.mmdb {

$geoip2_data_city_code default=all city names en;

}

map $geoip2_data_city_code $allowed_city {

default yes;

Shanghai yes;

}

.........

}

server {

.........

if ($allowed_city = no) {

return 403;

}

.........

}

 类似资料: