首页 网建技术 关于记录Nginx环境中将不同的爬虫指向不同的后端详细步骤操作如下

关于记录Nginx环境中将不同的爬虫指向不同的后端详细步骤操作如下

这里小编看到一个业务需求是将Nginx环境中将蜘蛛和爬虫的请求和用户的请求分离不同的后端。比如我们可以预先设定爬虫的记录,然后在符合要求的爬虫和不属于的时候进行分离。这里简单的记录…

这里小编看到一个业务需求是将Nginx环境中将蜘蛛和爬虫的请求和用户的请求分离不同的后端。比如我们可以预先设定爬虫的记录,然后在符合要求的爬虫和不属于的时候进行分离。这里简单的记录如下。

1、用map来匹配变现

map $http_user_agent $is_bot {
      default 0;
      ~[a-z]bot[^a-z] 1;
      ~[sS]pider[^a-z] 1;
      'Yahoo! Slurp China' 1;
      'Mediapartners-Google' 1;
      'YisouSpider' 1;
  }
在这里我们生成了一个名为 $is_bot 的变量,该变量默认值是 0 ,如果匹配到上述 4 种正则表达式的情况后,值就变成1。你可以继续往 map 中添加新的表达式规则。

2、在location中使用该变量

location / {
    error_page 418 =200 @bots;
    if ($is_bot) {
        return 418;
    }
    proxy_pass http://donkey_web;
    include proxy.conf;
    access_log /export/home/logs/donkey/access.log main;
}
3、@bots的定义
location @bots {
    proxy_pass http://donkey_spider_web;
    include proxy.conf;
    access_log /export/home/logs/donkey_spider/access.log main;
}
当判断当前请求是爬虫的时候,返回 418 错误码。通过 error_page 将 418 错误码改为 200 (正常请求响应码),然后进入 @bots 这个 location 进行下一步处理。@bots 中将请求反向到你指定的后端应用。如此便可将正常的用户访问和爬虫访问独立开来,使二者不会互相影响。
免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

作者: 小小编

为您推荐

宝塔linux面板安装软件错误:宝塔面板检测到系统目录不可写。解决方法

宝塔linux面板安装软件错误:宝塔面板检测到系统目录不可写。解决方法

错误:宝塔面板检测到系统目录不可写。 1、安装了宝塔系统加固,请先关闭; 2、安装了云锁,请关闭系统加固功能; 3、安装...
宝塔linux面板node.js项目服务器重启丢失,pm2列表被删除清空解决方案

宝塔linux面板node.js项目服务器重启丢失,pm2列表被删除清空解决方案

宝塔linux面板node.js项目服务器重启丢失,pm2列表被删除清空解决方案 近期由于服务器异常重启,发现node....
宝塔linux面板 apache网站访问报错503 Service Unavailable解决

宝塔linux面板 apache网站访问报错503 Service Unavailable解决

宝塔linux面板 apache网站访问报错: 503 Service Unavailable Service Unav...
宝塔windows面板apache开启Gzip压缩方法

宝塔windows面板apache开启Gzip压缩方法

感谢网友安好反馈问题,经检查少写一个模块导致开启后apache无法启动 2018/05/18更正 第1步 apache配...
宝塔linux面板php5.6安装扩展bz2重启php服务报/lib64/libc.so.6: version `GLIBC_2.14′ not found解决方法

宝塔linux面板php5.6安装扩展bz2重启php服务报/lib64/libc.so.6: version `GLIBC_2.14′ not found解决方法

系统:centos6.x 环境:宝塔linux面板5.x php:5.6 查看php扩展已经安装bz2,但重启php服务...

发表回复

返回顶部