上一篇 下一篇 分享链接 返回 返回顶部

宝塔Nginx防爬虫配置降低无效流量消耗

发布人: 发布时间:20小时前 阅读量:10

网站日常运营中,来自恶意爬虫的无效流量会持续消耗服务器带宽和CPU资源,甚至导致正常用户访问变慢。通过在宝塔面板中定制Nginx规则,可以高效拦截大部分恶意爬虫,减少无效流量消耗。

为什么需要防爬虫配置

部分爬虫不具备真实用户行为特征,高频请求会挤占服务器资源,影响真实访问质量。通过Nginx层面的规则过滤,可在请求到达业务逻辑前直接拦截,降低资源开销。

宝塔面板进入Nginx配置

  1. 登录宝塔面板,进入“网站”菜单。
  2. 选择目标站点,点击“设置”。
  3. 切换至“配置文件”标签(或通过“反向代理”等入口修改Nginx配置)。
  4. 在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。

注意事项

  1. 放行白名单:建议在限制前放行百度、谷歌等搜索引擎官方UA,避免影响SEO收录。
  2. 测试配置:修改Nginx配置后,点击宝塔面板的“负载均衡”或使用命令行执行nginx -t验证语法,再重载服务。
  3. 动态更新:恶意爬虫UA会不断变化,需定期维护规则列表。
  4. 防火墙插件配合:宝塔自带的Nginx防火墙插件也可提供类似防护,便于通过图形界面操作。

结语

通过合理的Nginx规则配置,能有效减小无效流量对服务器资源的占用,提升业务稳定性。建议结合日志分析持续优化规则,保障正常用户和搜索引擎爬虫的良好访问体验。

目录结构
全文
企业微信 企业微信
微信公众号 微信公众号
服务热线: 400-790-1688
电子邮箱: 3310008520@qq.com