有些东西不想让洋鬼子看,所以琢磨了一下。
原想用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就行了。
我这的规则是默认拒绝,只允许中国,可以根据情况调整。
博主 你这里的评论加载不出来啊
cdn缓存
博主你好,为什么我没有找到ngx_http_geoip2_module.so这个文件啊
你没装,或者没编译