首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Nginx使用GeoIP模块限制IP访问

Nginx使用GeoIP模块限制IP访问

作者头像
陳斯托洛夫斯記
发布2022-10-27 15:43:04
发布2022-10-27 15:43:04
4.8K0
举报
文章被收录于专栏:XBDXBD

安装geoip模块

代码语言:javascript
复制
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx.pid \
--user=nginx \
--group=nginx \
--with-stream \
--with-threads \
--with-file-aio \
--with-http_v2_module \
--with-http_mp4_module \
--with-http_sub_module  \
--with-http_ssl_module \
--with-http_geoip_module

下载IP数据库

代码语言:javascript
复制
# 官网地址:https://www.miyuru.lk/geoiplegacy

# 下载国家数据库
wget https://dl.miyuru.lk/geoip/maxmind/country/maxmind.dat.gz
gzip -d maxmind.dat.gz
mv maxmind.dat /usr/local/nginx/geoip/GeoCountry.dat

# 下载城市数据库
wget https://dl.miyuru.lk/geoip/maxmind/city/maxmind.dat.gz
gzip -d maxmind.dat.gz
mv maxmind.dat /usr/local/nginx/geoip/GeoCity.dat

修改nginx配置

代码语言:javascript
复制
# 添加IP数据库
http {
    ...
    geoip_country /usr/local/nginx/geoip/GeoCountry.dat;
    geoip_city /usr/local/nginx/geoip/GeoCity.dat;
    ...
}

# 屏蔽国家
server {
    ...
    location / {
        ...
        if ($geoip_country_code != CN) {	# 禁止非中国IP访问
            return 403;
        }
        ...
    }
    ...
}

# 屏蔽城市
server {
    ...
    location / {
        ...
        if ($geoip_city = Beijing) {
            return 403;
        }
        ...
    }
    ...
}

# 屏蔽省份
# 屏蔽省份不能使用说明中的Henan、Liaoning等字眼,需要使用ISO3166规定的代码,代码参见https://www.maxmind.com/download/geoip/misc/region_codes.csv
server {
    ...
    location / {
        ...
        if ($geoip_region = 22) {
            return 403;
        }
        ...
    }
    ...
}

GeoIP相关参数

代码语言:javascript
复制
# 国家参数
$geoip_country_code #两位字符的英文国家码。如:CN, US
$geoip_country_code3 #三位字符的英文国家码。如:CHN, USA
$geoip_country_name #国家英文全称。如:China, United States

# 城市参数
$geoip_city_country_code #也是两位字符的英文国家码。
$geoip_city_country_code3 #上同
$geoip_city_country_name #上同.
$geoip_region #这个经测试是两位数的数字,如杭州是02, 上海是 23
$geoip_city #城市的英文名称。如:Hangzhou
$geoip_postal_code #城市的邮政编码。国内该字段为空
$geoip_latitude #纬度
$geoip_longitude #经度

# 省份参数
CN,01,”Anhui”
CN,02,”Zhejiang”
CN,03,”Jiangxi”
CN,04,”Jiangsu”
CN,05,”Jilin”
CN,06,”Qinghai”
CN,07,”Fujian”
CN,08,”Heilongjiang”
CN,09,”Henan”
CN,10,”Hebei”
CN,11,”Hunan”
CN,12,”Hubei”
CN,13,”Xinjiang”
CN,14,”Xizang”
CN,15,”Gansu”
CN,16,”Guangxi”
CN,18,”Guizhou”
CN,19,”Liaoning”
CN,20,”Nei Mongol”
CN,21,”Ningxia”
CN,22,”Beijing”
CN,23,”Shanghai”
CN,24,”Shanxi”
CN,25,”Shandong”
CN,26,”Shaanxi”
CN,28,”Tianjin”
CN,29,”Yunnan”
CN,30,”Guangdong”
CN,31,”Hainan”
CN,32,”Sichuan”
CN,33,”Chongqing”
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装geoip模块
  • 下载IP数据库
  • 修改nginx配置
  • GeoIP相关参数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档