教你使用Nginx限制百度蜘蛛頻繁抓取的問題
百度蜘蛛對網(wǎng)站的抓取頻率高和抓取量驟增導(dǎo)致服務(wù)器負載高,經(jīng)常收到警告信息。最終采用nginx的ngx_http_limit_req_module模塊限制了百度蜘蛛的抓取頻率。每分鐘允許百度蜘蛛抓取200次,超過頻率限制的返回503。
limit_req_zone
語法: limit_req_zone $variable zone=name:size rate=rate;
默認值: none
配置段: http
設(shè)置一塊共享內(nèi)存限制域的參數(shù),它可以用來保存鍵值的狀態(tài)。 它特別保存了當(dāng)前超出請求的數(shù)量。 鍵的值就是指定的變量(空值不會被計算)。
這里鍵值使用客戶端的agent, 使用$http_user_agent變量。 如果限制域的存儲空間耗盡了,對于后續(xù)所有請求,服務(wù)器都會返回 503 (Service Temporarily Unavailable)錯誤。
請求頻率可以設(shè)置為每秒幾次(r/s)。如果請求的頻率不到每秒一次, 你可以設(shè)置每分鐘幾次(r/m)。比如每秒半次就是30r/m。
全局配置nginx.conf
limit_req_zone $ning_spider zone=ning_spider:10m rate=200r/m;
某個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個請求。
指令limit_req 中的burst=5 表示最大并發(fā)為5。即同一時間只能同時處理5個請求。
指令limit_req 中的nodelay 表示當(dāng)已經(jīng)達到burst值時,再來新請求時,直接返回503IF部分用于判斷是否是百度蜘蛛的user agent。如果是,就對變量$ning_spider賦值。這樣就做到了只對百度蜘蛛進行限制了。
測試,速率達不上可以同時開多個以下腳本測試
[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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Nginx之Location配置(Location匹配順序)
這篇文章主要介紹了詳解Nginx之Location配置(Location匹配順序),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Nginx基礎(chǔ)學(xué)習(xí)之realip模塊的使用方法
這篇文章主要給大家介紹了關(guān)于Nginx基礎(chǔ)學(xué)習(xí)之realip模塊使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Nginx具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06nginx出現(xiàn)權(quán)限問題解決(13: Permission denied)
本文主要介紹了nginx出現(xiàn)權(quán)限問題解決(13: Permission denied),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Node.js站點使用Nginx作反向代理時配置GZip壓縮的教程
這篇文章主要介紹了Node.js站點使用Nginx作反向代理時配置GZip壓縮的教程,文中演示了Node使用Express框架時的HTTP傳輸壓縮配置,需要的朋友可以參考下2016-04-04