簡單介紹使用Nginx限制百度蜘蛛頻繁抓取的問題
導讀 | 這篇文章主要介紹了使用Nginx限制百度蜘蛛頻繁抓取的問題,百度蜘蛛對網站的抓取頻率高和抓取量驟增導致伺服器負載高,經常收到警告資訊,每分鐘允許百度蜘蛛抓取200次,超過頻率限制的返回503,對Nginx限制蜘蛛頻繁抓取相關知識感興趣的朋友一起看看吧 |
百度蜘蛛對網站的抓取頻率高和抓取量驟增導致伺服器負載高,經常收到警告資訊。最終採用nginx的ngx_http_limit_req_module模組限制了百度蜘蛛的抓取頻率。每分鐘允許百度蜘蛛抓取200次,超過頻率限制的返回503。
limit_req_zone
語法: limit_req_zone $variable zone=name:size rate=rate;
預設值: none
配置段: http
設定一塊共享記憶體限制域的引數,它可以用來儲存鍵值的狀態。 它特別儲存了當前超出請求的數量。 鍵的值就是指定的變數(空值不會被計算)。
這裡鍵值使用客戶端的agent, 使用$http_user_agent變數。 如果限制域的儲存空間耗盡了,對於後續所有請求,伺服器都會返回 503 (Service Temporarily Unavailable)錯誤。
請求頻率可以設定為每秒幾次(r/s)。如果請求的頻率不到每秒一次, 你可以設定每分鐘幾次(r/m)。比如每秒半次就是30r/m。
limit_req_zone $ning_spider zone=ning_spider:10m rate=200r/m;
if ($http_user_agent ~* "baiduspider|Googlebot") { set $ning_spider $http_user_agent; } limit_req zone=ning_spider burst=5 nodelay;
引數說明:
指令linit_req_zone 中的rate=200r/m 表示每分鐘只能處理200個請求。
指令limit_req 中的burst=5 表示最大併發為5。即同一時間只能同時處理5個請求。
指令limit_req 中的nodelay 表示當已經達到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" curl -I -A "Sogou web spider" done echo $sum
tailf /home/wwwlog/access.log|grep 503
到此這篇關於使用Nginx限制百度蜘蛛頻繁抓取 的文章就介紹到這了。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2854937/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 簡單介紹nginx 變數使用Nginx變數
- 簡單介紹nginx反向代理及使用Nginx
- 簡單介紹Windows中將Nginx新增為服務的問題WindowsNginx
- 簡單介紹Nginx tp3.2.3 404問題解決方案Nginx
- 禁止頻繁請求的ip訪問nginxNginx
- 簡單介紹Lombok使用@Tolerate實現衝突相容問題Lombok
- NodeJS require路徑問題簡單介紹NodeJSUI
- laravel 單使用者 單IP 頻次訪問限制Laravel
- linux安全篇:禁止頻繁訪問的ip訪問nginxLinuxNginx
- 簡單介紹使用p-limit 限制併發數原始碼解析MIT原始碼
- WPF頻繁更新UI卡頓問題UI
- [React]setState呼叫過於頻繁的問題React
- 簡單介紹Pygame 精準檢測影像碰撞的問題GAM
- Opencc4j 開源中文繁簡體使用介紹Opencc4j
- javascript for in語句瀏覽器相容問題簡單介紹JavaScript瀏覽器
- getBoundingClientRect()瀏覽器相容問題簡單介紹GCclient瀏覽器
- webstorm簡單介紹,webstrom基本使用WebORM
- Webpack 的簡單介紹Web
- Promise的簡單介紹Promise
- CFRunloopObserverRef 的簡單介紹OOPServer
- javascript匿名函式的使用簡單介紹JavaScript函式
- TCP/UDP簡單介紹及JavaSocket的使用TCPUDPJava
- redis的簡單使用和介紹(轉載)Redis
- 簡單介紹redis分散式鎖解決表單重複提交的問題Redis分散式
- 簡單介紹最新python 字串陣列互轉問題Python字串陣列
- 開發小程式被問到最頻繁的問題(上)
- POP簡單介紹與使用實踐
- Nginx主程式使用介紹Nginx
- SVG簡單介紹SVG
- HTML簡單介紹HTML
- ActiveMQ簡單介紹MQ
- HTML 簡單介紹HTML
- JavaScript 簡單介紹JavaScript
- CSS 簡單介紹CSS
- SCSS 簡單介紹CSS
- UICollectionView 簡單介紹UIView
- css簡單介紹CSS
- crontab導致的頻繁傳送郵件的問題