我们的一些网站存在问题,雅虎,谷歌,Yandex,Bing Ahrefs和其他网站都在同一时间对该网站进行索引,从而导致该网站死亡。
我已经将fail2ban配置为阻止源IP,但这些都是永远在变化,所以并不理想。我也尝试过使用robots.txt,但这没什么区别。
我们已经尝试将网站放在cloudflare之后,但这又没什么区别,我们所能做的就是阻止源IP。
我还能做什么?
目前我们正在使用Nagios监控网站,当网站无响应时会重新启动nginx,但这似乎远非理想。
运行nginx的Ubuntu服务器
Robots.txt文件在这里: -
User-agent: *
Disallow: /
发布此处以防有任何我可以让开发人员尝试的事情。
由于
答案 0 :(得分:0)
您的 robots.txt 应该有效。请注意,并非所有抓取工具都尊重robots.txt。
robots.txt 区分大小写,需要在www.yourdomain.com/robots.txt上进行全球阅读。
查看添加Crawl-delay: 10
时会发生什么。
答案 1 :(得分:0)
一种简单的方法是根据请求中的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个请求。请注意,速率限制将是"全球" (相对于每IP),即所有机器人将在单个队列中等待访问该网站。可以轻松修改配置以对每个IP进行速率限制,或者对某些用户代理进行白名单。
server
或location
级:
limit_req zone=bot burst=5;
这意味着"爆发"有5个请求是可能的。如果需要,您可以删除此选项。
当请求速率受限时,Nginx将发出HTTP状态代码429。 "萨"网络爬虫检测到这一点并减慢扫描网站的速度。
虽然我应该说这整个问题要复杂得多。有很多恶意请求假装来自Google,Twitter,FB等来自各种扫描仪和抓取工具(例如,请参阅this question),他们既不尊重robots.txt
也不尊重429.有时它们是相当的智能并且User-Agents
模仿浏览器。在这种情况下,上述方法对您没有帮助。