作为服务器管理员,您可能会知道这个问题:您已完成所有操作以优化服务器,并且其工作效果非常好,随之而来的是一个愚蠢的搜索引擎bot(如Bingbot),同时可以使用数百个连接点击所有的虚拟机,使您的服务器负载上升。 当然,您不希望完全阻止机器人(除非您不在意特定的搜索引擎),因此您可以使用robots.txt
和/或nginx来控制搜索引擎机器人与您的服务器的连接。
1初步说明
我在本教程中专注于Bingbot,因为这个机器人每次访问网站时都会产生过多的连接(我没有注意到任何其他搜索引擎bot)。 当然,您应该做的第一件事是限制Bing网站管理员工具中的抓取速度。 如果没有帮助,或者您无法访问服务器上所有vhost的Bing网站管理员工具,请继续阅读。
2使用robots.txt
Bingbot了解Crawl-delay
指令(Googlebot不会将此用于Googlebot!),因此您可以在robots.txt
文件中使用(请参阅http://www.bing.com/blogs/site_blogs/ b / webmaster / archive / 2012/05/03 / to-crawl-or-not-to-crawl-that-be-bingbot-s-question.aspx ):
User-Agent: bingbot Crawl-delay: 1 |
因为您在robots.txt中为Bingbot创建了一个额外的部分,所以允许
/ 禁止
User-Agent:*
的指令对Bingbot无效,因此请务必重复对Bingbot的Allow
/ Disallow
指令,例如这个:
User-Agent: * Disallow: /cache/ Disallow: /engine/ Disallow: /files/ Disallow: /templates/ Disallow: /uploads/ Disallow: /newsletter/ Disallow: /kontaktformular/ Disallow: /widerrufsrecht/ Disallow: /datenschutz-und-sicherheit Disallow: /agb/ Disallow: /shopware.php/sViewport,admin Disallow: /shopware.php/sViewport,note Disallow: /shopware.php/sViewport,basket Disallow: /shopware.php/sViewport,rma Disallow: /shopware.php/sViewport,support Disallow: /shopware.php/sViewport,ticket Disallow: /shopware.php/sViewport,newsletter Disallow: /shopware.php/sViewport,tellafriend Sitemap: http://www.example.com/sitemap.xml User-Agent: bingbot Crawl-delay: 1 Disallow: /cache/ Disallow: /engine/ Disallow: /files/ Disallow: /templates/ Disallow: /uploads/ Disallow: /newsletter/ Disallow: /kontaktformular/ Disallow: /widerrufsrecht/ Disallow: /datenschutz-und-sicherheit Disallow: /agb/ Disallow: /shopware.php/sViewport,admin Disallow: /shopware.php/sViewport,note Disallow: /shopware.php/sViewport,basket Disallow: /shopware.php/sViewport,rma Disallow: /shopware.php/sViewport,support Disallow: /shopware.php/sViewport,ticket Disallow: /shopware.php/sViewport,newsletter Disallow: /shopware.php/sViewport,tellafriend Sitemap: http://www.example.com/sitemap.xml |
3使用nginx控制Bot连接
我们可以使用HttpGeoModule和HttpLimitReqModule来控制搜索引擎机器人与您的nginx服务器的连接。 打开/etc/nginx/nginx.conf
...
vi /etc/nginx/nginx.conf
...并将其添加到您的http {}
容器(在您的虚拟机配置文件包含/定义的部分之前):
[...] geo $isabot { default 0; #bingbot 157.55.32.0/24 1; 157.56.229.0/24 1; 157.56.93.0/24 1; 157.55.33.0/24 1; } map $isabot $limited_ip_key { 0 ''; 1 $binary_remote_addr; } limit_req_zone $limited_ip_key zone=isabot:5m rate=2r/s; limit_req zone=isabot burst=200; [...] |
这将将Bingbot的爬网速度限制为每秒两次; 超过连接将被延迟并放入200个突发(直到突发已满,那么nginx将返回一个503错误到Bingbot)。
当然,您可以向地理位置
容器添加更多的IP或子网。
不要忘记重新加载nginx:
/etc/init.d/nginx reload
4链接
- nginx: http : //nginx.org/
- nginx维基: http : //wiki.nginx.org/