Table of Contents
背景
在某些情况下网站运营者可能希望限制国内用户访问,以防止同行直接抄袭内容或者为了保护营销数据的准确性。本文方案虽然无法实现完全屏蔽,但通过技术手段可以在一定程度上限制大部分国内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配置:






评论(0)