教你使用Nginx限制百度蜘蛛頻繁抓取的問題
百度蜘蛛對(duì)網(wǎng)站的抓取頻率高和抓取量驟增導(dǎo)致服務(wù)器負(fù)載高,經(jīng)常收到警告信息。最終采用nginx的ngx_http_limit_req_module模塊限制了百度蜘蛛的抓取頻率。每分鐘允許百度蜘蛛抓取200次,超過頻率限制的返回503。
limit_req_zone
語法: limit_req_zone $variable zone=name:size rate=rate;
默認(rèn)值: none
配置段: http
設(shè)置一塊共享內(nèi)存限制域的參數(shù),它可以用來保存鍵值的狀態(tài)。 它特別保存了當(dāng)前超出請(qǐng)求的數(shù)量。 鍵的值就是指定的變量(空值不會(huì)被計(jì)算)。
這里鍵值使用客戶端的agent, 使用$http_user_agent變量。 如果限制域的存儲(chǔ)空間耗盡了,對(duì)于后續(xù)所有請(qǐng)求,服務(wù)器都會(huì)返回 503 (Service Temporarily Unavailable)錯(cuò)誤。
請(qǐng)求頻率可以設(shè)置為每秒幾次(r/s)。如果請(qǐng)求的頻率不到每秒一次, 你可以設(shè)置每分鐘幾次(r/m)。比如每秒半次就是30r/m。
全局配置nginx.conf
limit_req_zone $ning_spider zone=ning_spider:10m rate=200r/m;
某個(gè)server中
if ($http_user_agent ~* "baiduspider|Googlebot") { set $ning_spider $http_user_agent; } limit_req zone=ning_spider burst=5 nodelay;
參數(shù)說明:
指令linit_req_zone 中的rate=200r/m 表示每分鐘只能處理200個(gè)請(qǐng)求。
指令limit_req 中的burst=5 表示最大并發(fā)為5。即同一時(shí)間只能同時(shí)處理5個(gè)請(qǐng)求。
指令limit_req 中的nodelay 表示當(dāng)已經(jīng)達(dá)到burst值時(shí),再來新請(qǐng)求時(shí),直接返回503IF部分用于判斷是否是百度蜘蛛的user agent。如果是,就對(duì)變量$ning_spider賦值。這樣就做到了只對(duì)百度蜘蛛進(jìn)行限制了。
測(cè)試,速率達(dá)不上可以同時(shí)開多個(gè)以下腳本測(cè)試
[root@localhost ~]# cat test.sh
#! /bin/bash sum=0; for i in {1..1000} do ((sum = sum + i)) curl -I -A "Baiduspider" http://www.hezongtianxia.com curl -I -A "Sogou web spider" http://www.hezongtianxia.com done echo $sum
tailf /home/wwwlog/access.log|grep 503
參考:http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_limit_req_module.html
到此這篇關(guān)于使用Nginx限制百度蜘蛛頻繁抓取 的文章就介紹到這了,更多相關(guān)Nginx限制蜘蛛頻繁抓取 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx之為已安裝nginx動(dòng)態(tài)添加模塊的方法
本篇文章主要介紹了Nginx之為已安裝nginx動(dòng)態(tài)添加模塊的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04詳解Nginx之Location配置(Location匹配順序)
這篇文章主要介紹了詳解Nginx之Location配置(Location匹配順序),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Nginx基礎(chǔ)學(xué)習(xí)之realip模塊的使用方法
這篇文章主要給大家介紹了關(guān)于Nginx基礎(chǔ)學(xué)習(xí)之realip模塊使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Nginx具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06nginx出現(xiàn)權(quán)限問題解決(13: Permission denied)
本文主要介紹了nginx出現(xiàn)權(quán)限問題解決(13: Permission denied),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Node.js站點(diǎn)使用Nginx作反向代理時(shí)配置GZip壓縮的教程
這篇文章主要介紹了Node.js站點(diǎn)使用Nginx作反向代理時(shí)配置GZip壓縮的教程,文中演示了Node使用Express框架時(shí)的HTTP傳輸壓縮配置,需要的朋友可以參考下2016-04-04