网站日常运营中,来自恶意爬虫的无效流量会持续消耗服务器带宽和CPU资源,甚至导致正常用户访问变慢。通过在宝塔面板中定制Nginx规则,可以高效拦截大部分恶意爬虫,减少无效流量消耗。
为什么需要防爬虫配置
部分爬虫不具备真实用户行为特征,高频请求会挤占服务器资源,影响真实访问质量。通过Nginx层面的规则过滤,可在请求到达业务逻辑前直接拦截,降低资源开销。
宝塔面板进入Nginx配置
- 登录宝塔面板,进入“网站”菜单。
- 选择目标站点,点击“设置”。
- 切换至“配置文件”标签(或通过“反向代理”等入口修改Nginx配置)。
- 在server段内添加自定义规则。
常用防爬虫规则配置
1. 按User-Agent过滤
在server段中添加如下配置,将已知恶意爬虫的UA标识返回403:
# 禁止常见恶意爬虫
if ($http_user_agent ~* "curl|wget|python-requests|scrapy|MJ12bot|AhrefsBot") { return 403; }
}注意:此正则列表需根据实际情况调整,避免误伤搜索引擎官方爬虫。
2. 使用map模块集中管理UA规则
推荐使用map方法,便于维护多个UA标识。在http段中定义映射:
map $http_user_agent $bad_bot {
default 0;
~*curl 1;
~*wget 1;
~*scrapy 1;
~*ahrefsbot 1;
~*mj12bot 1;
}然后在server段中判断:
if ($bad_bot = 1) { return 403; }3. 限制单IP请求频率
使用Nginx的limit_req模块可限制特定路径的每秒请求数,减少爬虫造成的资源消耗。在http段配置限流区域:
limit_req_zone $binary_remote_addr zone=anti_spider:10m rate=5r/s;
在server段中加入:
location / {
limit_req zone=anti_spider burst=10 nodelay;
}该配置将每个IP的请求速率限制为每秒5次,允许10个突发请求,超出后返回503。
注意事项
- 放行白名单:建议在限制前放行百度、谷歌等搜索引擎官方UA,避免影响SEO收录。
- 测试配置:修改Nginx配置后,点击宝塔面板的“负载均衡”或使用命令行执行
nginx -t验证语法,再重载服务。 - 动态更新:恶意爬虫UA会不断变化,需定期维护规则列表。
- 防火墙插件配合:宝塔自带的Nginx防火墙插件也可提供类似防护,便于通过图形界面操作。
结语
通过合理的Nginx规则配置,能有效减小无效流量对服务器资源的占用,提升业务稳定性。建议结合日志分析持续优化规则,保障正常用户和搜索引擎爬虫的良好访问体验。