您好,您有这个国家的IP库就可以实现。
我下面给你使用伪代码实现下,原理和思路,具体应用到网站上,你要自己去改配置文件了
例如,把美国这个国家禁止访问,
1、先增加geoip这个模块,参考河妖写的教程帖子:https://www.bt.cn/bbs/forum.php? ... 118&highlight=geoip
2、到geoip上官方下载到ip库,https://dev.maxmind.com/geoip/legacy/geolite/
GeoIP.dat GeoLiteCity.dat
放到 /www/server/panel/nginx/vhost/geoip/ 目录下,
3、编写配置文件,geoip.conf,放到
/www/server/panel/nginx/vhost/目录下
内容:
- geoip_country /www/server/panel/nginx/vhost/geoip/GeoIP.dat;
- geoip_city /www/server/panel/nginx/vhost/geoip/GeoLiteCity.dat;
复制代码
4、使用map定义一个规则
- map $geoip_country_code $allowed_country {
- default yes; # default都能访问
- US no; # 禁止从美国的访问
- }
复制代码
然后在网站配置文件中引用这个规则
- server {
- ...其他部分省略...
- if ($allowed_country = no) {
- # 444是空response
- return 444;
- }
- }
复制代码
|