有些东西不想让洋鬼子看,所以琢磨了一下。

 

原想用lua模块自己干,忽然想到nginx是有geoip/geoip2的,所以直接用了。

 

数据库地址:

http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz

http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz

我这是放在/usr/local/share/GeoIP/ 里面。

 

nginx.conf加载模块:

load_module /usr/local/libexec/nginx/ngx_http_geoip2_module.so;

 

http段进行国家代码的map映射:

  geoip2 /usr/local/share/GeoIP/GeoLite2-Country.mmdb {
    $geoip2_data_country_code country iso_code;
  }

  map $geoip2_data_country_code $allowed_country {
    default no;
    CN yes;
  }

 

站点的server段里面加一下拒绝:

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

 

 

最后重启一下nginx就行了。

我这的规则是默认拒绝,只允许中国,可以根据情况调整。

作者 听涛

《Nginx+GeoIP2进行地域限制》有4条评论
  1. 博主你好,为什么我没有找到ngx_http_geoip2_module.so这个文件啊

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注