成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

nginx 對(duì)同一 ip 訪問(wèn)請(qǐng)求速率限制

OpenDigg / 758人閱讀

摘要:使用漏桶方法進(jìn)行限制。過(guò)多的請(qǐng)求被延遲,直到它們的數(shù)量超過(guò)最大突發(fā)大小,在這種情況下請(qǐng)求以錯(cuò)誤終止。設(shè)置要響應(yīng)拒絕的請(qǐng)求而返回的狀態(tài)代碼。如果需要每秒少于一個(gè)請(qǐng)求的速率,則在每分鐘請(qǐng)求中指定。

模塊ngx_http_limit_req_module

主要用到的指令

 limit_req 
 limit_req_log_level 
 limit_req_status 
 limit_req_zone
 

所述ngx_http_limit_req_module模塊(0.7.21)用于限制每一個(gè)定義的鍵值的請(qǐng)求的處理速率,特別是從一個(gè)單一的IP地址的請(qǐng)求的處理速率。使用“漏桶”方法進(jìn)行限制。

示例配置
http { 
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; 

    ... 

    server { 

        ... 

        location / search / { 
            limit_req zone=one burst=5; 
        }
指令
句法:    limit_req zone=name [burst=number] [nodelay | delay=number];
默認(rèn): -
語(yǔ)境: http,server,location

設(shè)置共享內(nèi)存區(qū)域和請(qǐng)求的最大突發(fā)大小。如果請(qǐng)求速率超過(guò)為區(qū)域配置的速率,則延遲處理,以便以定義的速率處理請(qǐng)求。過(guò)多的請(qǐng)求被延遲,直到它們的數(shù)量超過(guò)最大突發(fā)大小,在這種情況下請(qǐng)求以錯(cuò)誤終止。默認(rèn)情況下,最大突發(fā)大小等于零。例如,指令

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

server { 
    location / search / { 
        limit_req zone=one burst=5;
    }

平均每秒允許不超過(guò)1個(gè)請(qǐng)求,突發(fā)不超過(guò)5個(gè)請(qǐng)求。

如果不希望在請(qǐng)求受限的情況下延遲過(guò)多的請(qǐng)求,nodelay則應(yīng)使用以下參數(shù):

limit_req zone=one burst=5 nodelay;

delay參數(shù)(1.15.7)指定在該過(guò)度請(qǐng)求成為被延遲請(qǐng)求的最大值。默認(rèn)值為零,即所有過(guò)多的請(qǐng)求都會(huì)延遲。

可以有多個(gè)limit_req指令。例如,以下配置將限制來(lái)自單個(gè)IP地址的請(qǐng)求的處理速率,同時(shí)限制虛擬服務(wù)器的請(qǐng)求處理速率:

limit_req_zone $binary_remote_addr zone=perip:10m rate=1r/s;
limit_req_zone $server_name zone=perserver:10m rate=10r/s;

server {
    ...
    limit_req zone=perip burst=5 nodelay;
    limit_req zone=perserver burst=10;
}

當(dāng)且僅當(dāng)limit_req 當(dāng)前級(jí)別沒有指令時(shí),這些指令才從先前級(jí)別繼承 。

句法:    limit_req_log_level info | notice | warn | error;
默認(rèn):
limit_req_log_level錯(cuò)誤;
語(yǔ)境: http,server,location
該指令出現(xiàn)在0.8.18版本中。

為服務(wù)器因速率超過(guò)或延遲請(qǐng)求處理而拒絕處理請(qǐng)求的情況設(shè)置所需的日志記錄級(jí)別。延遲的記錄水平比拒絕的記錄水平低一個(gè)點(diǎn); 例如,如果limit_req_log_level notice指定了“ ”,則會(huì)使用info級(jí)別記錄延遲。

句法:    limit_req_status code;
默認(rèn):
limit_req_status 503;
語(yǔ)境: http,server,location
該指令出現(xiàn)在1.3.15版本中。

設(shè)置要響應(yīng)拒絕的請(qǐng)求而返回的狀態(tài)代碼。

句法:    limit_req_zone key zone=name:size rate=rate [sync];
默認(rèn): -
語(yǔ)境: http
設(shè)置共享內(nèi)存區(qū)域的參數(shù),該區(qū)域?qū)⒈A舾鞣N鍵的狀態(tài)。特別是,狀態(tài)存儲(chǔ)當(dāng)前的過(guò)多請(qǐng)求數(shù)。該key可以包含文本,變量,他們的組合。具有空鍵值的請(qǐng)求不計(jì)算在內(nèi)。

在1.7.6版之前,鍵值 key可以只包含一個(gè)變量。

用法示例:

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

這里,狀態(tài)保持在10兆字節(jié)區(qū)域“one”,并且該區(qū)域的平均請(qǐng)求處理速率不能超過(guò)每秒1個(gè)請(qǐng)求。

客戶端IP地址用作鍵值。需要注意的是,而不是$remote_addr,該 $binary_remote_addr變量在這里使用。$binary_remote_addr對(duì)于IPv4地址,變量的大小始終為4個(gè)字節(jié),對(duì)于IPv6地址,變量的大小始終為16個(gè)字節(jié)。存儲(chǔ)狀態(tài)在32位平臺(tái)上總是占用64個(gè)字節(jié),在64位平臺(tái)上占用128個(gè)字節(jié)。一兆字節(jié)區(qū)域可以保留大約16,000個(gè)64字節(jié)狀態(tài)或大約8千個(gè)128字節(jié)狀態(tài)。

如果區(qū)域存儲(chǔ)空間耗盡,則刪除最近最少使用的狀態(tài)。即使在此之后無(wú)法創(chuàng)建新狀態(tài),該請(qǐng)求也會(huì)因錯(cuò)誤而終止。

速率以每秒請(qǐng)求數(shù)(r/s)指定。如果需要每秒少于一個(gè)請(qǐng)求的速率,則在每分鐘請(qǐng)求(r/m)中指定。例如,每秒半請(qǐng)求為30r/m。

的sync參數(shù)(1.15.3)使 同步 共享存儲(chǔ)器區(qū)。

該sync參數(shù)作為Nginx Plus商業(yè)訂閱的一部分提供 。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/40411.html

相關(guān)文章

  • 使用 Nginx 過(guò)濾網(wǎng)絡(luò)爬蟲

    摘要:現(xiàn)在有許多初學(xué)者學(xué)習(xí)網(wǎng)絡(luò)爬蟲,但他們不懂得控制速度,導(dǎo)致服務(wù)器資源浪費(fèi)。通過(guò)的簡(jiǎn)單配置,能過(guò)濾一小部分這類爬蟲。參考限制某個(gè)同一時(shí)間段的訪問(wèn)次數(shù)首發(fā)地址使用過(guò)濾網(wǎng)絡(luò)爬蟲蜻蜓代理 現(xiàn)在有許多初學(xué)者學(xué)習(xí)網(wǎng)絡(luò)爬蟲,但他們不懂得控制速度,導(dǎo)致服務(wù)器資源浪費(fèi)。通過(guò) Nginx 的簡(jiǎn)單配置,能過(guò)濾一小部分這類爬蟲。 方法一:通過(guò) User-Agent 過(guò)濾 Nginx 參考配置如下: lo...

    Steven 評(píng)論0 收藏0
  • Nginx http資源請(qǐng)求限制(三種方法)

    摘要:將延遲處理此類請(qǐng)求,直到存儲(chǔ)區(qū)共享存儲(chǔ)區(qū)已滿。因此,如果目標(biāo)是阻止下載速度大于指定值,則連接數(shù)也應(yīng)該受到限制。以下示例顯示了用于限制連接數(shù)和帶寬的組合配置。 原文鏈接:何曉東 博客 前置條件:nginx 需要有 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模塊,可以使用命令 2>&1 nginx -V | tr ...

    stormzhang 評(píng)論0 收藏0
  • Nginx http資源請(qǐng)求限制(三種方法)

    摘要:將延遲處理此類請(qǐng)求,直到存儲(chǔ)區(qū)共享存儲(chǔ)區(qū)已滿。因此,如果目標(biāo)是阻止下載速度大于指定值,則連接數(shù)也應(yīng)該受到限制。以下示例顯示了用于限制連接數(shù)和帶寬的組合配置。 原文鏈接:何曉東 博客 前置條件:nginx 需要有 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模塊,可以使用命令 2>&1 nginx -V | tr ...

    mayaohua 評(píng)論0 收藏0
  • 幾種限流技術(shù)

    摘要:下面是幾種常見的限流技術(shù)一限流算法常用的限流算法有令牌桶,漏桶令牌桶令牌桶算法是網(wǎng)絡(luò)流量整形和速率限制中最常使用的一種算法。 就秒殺接口來(lái)說(shuō),當(dāng)訪問(wèn)頻率或者并發(fā)請(qǐng)求超過(guò)其承受范圍的時(shí)候,這時(shí)候我們就要考慮限流來(lái)保證接口的可用性,以防止非預(yù)期的請(qǐng)求對(duì)系統(tǒng)壓力過(guò)大而引起的系統(tǒng)癱瘓。通常的策略就是拒絕多余的訪問(wèn),或者讓多余的訪問(wèn)排隊(duì)等待服務(wù)。下面是幾種常見的限流技術(shù) 一、限流算法常用的限流算...

    Warren 評(píng)論0 收藏0
  • Nginx源碼研究】nginx限流模塊詳解

    摘要:限流算法最簡(jiǎn)單粗暴的限流算法就是計(jì)數(shù)器法了,而比較常用的有漏桶算法和令牌桶算法計(jì)數(shù)器計(jì)數(shù)器法是限流算法里最簡(jiǎn)單也是最容易實(shí)現(xiàn)的一種算法。 運(yùn)營(yíng)研發(fā)團(tuán)隊(duì) 李樂(lè) 高并發(fā)系統(tǒng)有三把利器:緩存、降級(jí)和限流; 限流的目的是通過(guò)對(duì)并發(fā)訪問(wèn)/請(qǐng)求進(jìn)行限速來(lái)保護(hù)系統(tǒng),一旦達(dá)到限制速率則可以拒絕服務(wù)(定向到錯(cuò)誤頁(yè))、排隊(duì)等待(秒殺)、降級(jí)(返回兜底數(shù)據(jù)或默認(rèn)數(shù)據(jù)); 高并發(fā)系統(tǒng)常見的限流有:限制總并發(fā)...

    voyagelab 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<