nginx ---- 配置請求頻率與連線次數
阿新 • • 發佈:2019-01-27
第一種限制:
http {
#$limit_conn_zone:限制併發連線數
limit_conn_zone $binary_remote_addr zone=one1:10m;
#limit_req_zone:請求頻率
#$binary_remote_addr:以客戶端IP進行限制 ;
#zone=one:10m:建立IP儲存區大小為10M,用來儲存訪問頻率 ;
#rate=5r/s:表示客戶端的訪問評率為每秒5次
limit_req_zone $binary_remote_addr zone=one2:10m rate=10r/s;
server {
listen 80;
server_name 0.0.0.0;
location /{
#限制併發數2
limit_conn one1 2;
#burst:如果請求的頻率超過了限制域配置的值,請求處理會被延遲。
#nodelay:超過頻率限制的請求會被延遲,直到被延遲的請求數超過了定義的閾值,這個請求會被終止,並返回503
limit_req zone=one2 burst=10 nodelay;
}
}
第二種限制:通過IP
ip.config:
192.168.0.187 1;
192.168.0.188 0;
http {
# geo:指令定義了一個白名單$limited變數,預設值為1,如果客戶端ip在上面的範圍內,$limited的值為0
geo $limited{
default 1;
include ip.config;
}
#geo $limited{
# default 1;
# 192.168.0.188 0;
#}
#使用map指令對映搜尋引擎客戶端的ip為空串,如果不是搜尋引擎就顯示本身真是的ip,
#這樣搜尋引擎ip就不能存到limit_req_zone記憶體session中,所以不會限制搜尋引擎的ip訪問
map $limited $limit {
1 $binary_remote_addr;
0 "";
}
limit_conn_zone $limit zone=one:20m;
limit_req_zone $limit zone=one2:20m rate=10r/s;
server {
listen 80;
server_name 0.0.0.0;
location /{
limit_conn one 2;
limit_req zone=one2 burst=10 nodelay;
}
}
}
當你訪問的時候,你的IP會被捕獲到,如果你的IP配置的是:192.168.0.187 0;那麼你就將不會受到請求頻率的限制。
相反,你的IP沒有經過配置的話,就會被賦預設值 1 :192.168.0.187 1,然後你訪問的頻率就會受到限制了
第三種:搜尋引擎的伺服器太多,ip限制不過來,通過useragent限制
http {
limit_req_zone $anti_spider zone=one1:10m rate=100r/s;
limit_req_zone $noanti_spider zone=one2:10m rate=5r/s;
server {
listen 80;
server_name 0.0.0.0;
# 可以百度一下 http_user_agent 和 爬蟲
# 如果相等視他為正常爬蟲 限制頻率執行:$anti_spider 這一個配置
if ($http_user_agent ~* "EtaoSpider|EasouSpider|bingbot|AhrefsBot|qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver"){
set $anti_spider $http_user_agent;
}
# 不相等,惡意爬蟲 限制頻率執行 $noanti_spider 這一個配置
if ($http_user_agent !~* "EtaoSpider|EasouSpider|YoudaoBot|bingbot|AhrefsBot|qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver"){
set $noanti_spider $http_user_agent;
}
location /{
limit_req zone=one1 burst=10 nodelay;
limit_req zone=one2 burst=10 nodelay;
}
}
}
一些蜘蛛:
AhrefsBot
|360Spider 360蜘蛛
|qihoobot
|Baiduspider 百度蜘蛛
|Googlebot 谷歌蜘蛛
|Googlebot-Mobile 谷歌蜘蛛
|Googlebot-Image 谷歌蜘蛛
|Mediapartners-Google 谷歌蜘蛛
|Adsbot-Google 谷歌蜘蛛
|Feedfetcher-Google 谷歌蜘蛛
|Yahoo! Slurp 雅虎蜘蛛
|Yahoo! Slurp China 雅虎蜘蛛
|YoudaoBot 有道蜘蛛
|Sosospider SOSO蜘蛛
|Sogou spider SOSO蜘蛛
|Sogou web spider SOSO蜘蛛
|MSNBot MSN蜘蛛
|ia_archiver Alexa蜘蛛
|EtaoSpider 一淘網蜘蛛
|EasouSpider 宜sou蜘蛛
|bingbot 必應蜘蛛
")
可以結合下別的部落格看看,有些解釋不是很全面,像我自己使用的是第三種,正常使用中