安装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”