背景

在某些情况下网站运营者可能希望限制国内用户访问,以防止同行直接抄袭内容或者为了保护营销数据的准确性。本文方案虽然无法实现完全屏蔽,但通过技术手段可以在一定程度上限制大部分国内IP,达到“防君子不防小人”的效果。

解决方法

通过CloudFlare防火墙实现

如果使用CloudFlare域名托管,可以借助其提供的WAF (Web 应用程序防火墙)来实现,具体操作步骤如下:

1.登录 Cloudflare 账户,选择您的域名;

2.进入 Security (安全) > WAF (Web 应用程序防火墙) > Firewall Rules (防火墙规则);

3.创建规则 (Create firewall rule);

4.设置字段 (Field): 选择 Country/Region (国家/地区);

5.设置操作 (Operator): 选择 Equals (等于);

6.设置值 (Value): 选择您想屏蔽的 国家/地区 (例如中国、俄罗斯等);

7.设置动作 (Action): 选择 Block (阻止);

8.保存并部署规则。

宝塔面板通过Nginx实现

LNMP(Linux + Nginx + MySQL + PHP)环境中,可以通过IP地址库来实现这一目的。具体方法是先获取包含国内IP段的数据库(例如通过纯真IP库或GeoIP等工具),然后将这些IP段整理为Nginx可识别的格式,再在Nginx配置文件中通过deny指令进行限制。通常可以创建一个独立的IP列表配置文件,并在server或location块中引入从而实现对来自国内IP的访问请求返回403禁止访问状态。这种方法主要依赖于IP库的准确性,并且需要定期更新IP段列表,以确保屏蔽效果持续有效。当然,部分用户仍可能通过代理绕过限制,因此更适合作为一道基础防护措施。

方法一

首先我们要去弄到国内的IP地址段,访问网站 http://www.ip2location.com/free/visitor-blocker ,点击左侧的“Firewall List by Country”选项卡:

点击下载ip文件,你现在的IP最好不要加进去,否则你自己会访问不了。如图:

复制整段代码到宝塔的 Nginx 配置文件里面,保存并重载配置即可:

方法二

跟上面的方法类似,把下载下来的IP文件重命名为blockip.conf,用记事本打开去掉第一行的“location / {”和最后一行的“}”,然后把 blockip.conf上传到服务器的/www/server/nginx/conf/ 路径下面 权限改为644,打开网站的ngix配置在http块下面添加如下代码:

重载配置即可。

自定义403错误页面

我们来自定义一下丑陋的403错误返回页面。新建一个html内容随便blabla一点什么吧,放到你的网站根目录,然后打开网站demo.com配置:

声明
1.本网站名称: 盲盒博客
2.本站永久网址:https://exakit.com
3.本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长support@exakit.com
4.本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责
5.本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6.本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新