我们有一个问题,我们的一些网站,雅虎,谷歌,Yandex,必应Ahrefs和其他所有索引网站在同一时间,这杀死了网站。
我已经将fail2ban配置为阻止源I,但是它们永远都在改变,所以不太理想。我也尝试过使用robots.txt,但这并没有什么不同。
我们已经尝试过将站点放在cloudflare后面,但是这也没有什么区别,我们所能做的就是阻止源is。
我还能做什么?
目前,我们正在使用Nagios监视站点,当站点变得没有响应能力时,nginx就会重新启动nginx,但这似乎远远不够理想。
运行nginx的Ubuntu服务器
Robots.txt文件在这里:-
User-agent: *
Disallow: /张贴在这里,以防有任何东西,我可以让我们的开发人员尝试。
谢谢
发布于 2017-07-04 18:53:57
一种简单的方法是根据请求中的User-Agent头限制它们的等级。从原理图上看,这如下所示。
在Nginx配置中的http级别:
map $http_user_agent $bot_ua {
default '';
"~*Googlebot|Bing" Y;
}
limit_req_zone $bot_ua zone=bot:1m rate=1r/s;这将确保Googlebot或Bing在User-Agent中的所有请求的速率限制在每秒1个请求。请注意,速率限制将是“全局的”(vs.per-ip),也就是说,所有的机器人都将在一个队列中等待访问网站。该配置可以很容易地修改为在每个IP的基础上的比率限制或白名单一些用户代理。
在server或location级别:
limit_req zone=bot burst=5;这意味着“突发”5个请求是可能的。如果你愿意的话,你可以放弃这个选项。
当请求速率受限时,Nginx将发出HTTP状态代码429。“理智”的网络爬虫检测到这一点,并放慢扫描网站。
虽然我应该说整个问题要复杂得多。有许多恶意请求假装来自谷歌、推特、FB等,它们来自不同的扫描仪和爬虫(例如,参见这个问题),它们既不尊重robots.txt也不尊重429。有时他们非常聪明,并且有User-Agents模仿浏览器。在这种情况下,上述方法不会对您有所帮助。
发布于 2017-07-04 15:59:54
你的robots.txt应该能用。请注意,并非所有爬虫都尊重robots.txt。
robots.txt是区分大小写的,它需要在www.yourdomain.com/robots.txt上具有世界可读性。
查看添加Crawl-delay: 10时会发生什么。
https://stackoverflow.com/questions/44909824
复制相似问题