为 Nginx 开启 Geoip 模块以屏蔽特定国家/地区的访问

因为之前是通过 apt-get 方式安装的 Nginx,默认没有带 geoip module,需要安装:

apt-get install nginx-module-geoip   

然后编辑 /etc/nginx/nginx.conf

vim /etc/nginx/nginx.conf   

i 进入编辑模式,在最上方新增一行:

load_module modules/ngx_http_geoip_module.so;   

http{ 下方新增以下几行

geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $allowed_country {
    default yes;
    CN no;
    MY no;
}
// 默认允许访问,但是中国大陆地区不允许访问   

或者

geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $allowed_country {
    default no;
    CN yes;
    HK yes;
    TW yes;
    MO yes;
}
// 默认不允许访问,只允许大中华区访问   

ESC 输入 :wq 退出编辑

接下来,安装 Geoip 数据库

apt-get install geoip-database libgeoip1 && mv /usr/share/GeoIP/GeoIP.dat /usr/share/GeoIP/GeoIP.dat_bak && cd /usr/share/GeoIP/ && wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz && gunzip GeoIP.dat.gz   

编辑网站的 Nginx 配置文件

vim /etc/nginx/conf.d/xx.conf   // 按照你自己的配置文件打开   

server { 之后,location{} 内部或者外部新增

if ($allowed_country = no) {
    return 403;
}   

重启 Nginx 即可

service nginx restart   
2018-10-10  1+ 次浏览 编辑本文  返回顶部
Mastodon