最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nginx限速配置的三種方法(limit_req、limit_conn、limit_rate)

 更新時間:2023年08月24日 11:52:02   作者:_Hey_Jude  
本文主要介紹了nginx限速配置的三種方法,主要包括limit_req、limit_conn、limit_rate,本文就詳細的介紹一下如何使用,感興趣的可以了解一下

目前來說在nginx上面我們常見的三種限速操作分別是

  • 限制請求數(shù)(request) limit_req
  • 限制連接數(shù)(connection)  limit_conn
  • 限制響應速度(rate)   limit_rate 

1. limit_req

限制在一段時間內的HTTP請求的數(shù)量,主要算法原理就是基于在計算機網(wǎng)絡中當帶寬是有限時十分常用的漏桶算法。

基本原理就是:以漏桶為例,水從頂部倒入,從底下漏出。這里的幾個概念分別是:

  • 漏桶對應我們服務器的帶寬或者是處理請求的能力或者是一個隊列
  • 水表示客戶端發(fā)送過來的請求
  • 倒入的水則代表客戶端發(fā)送給服務器但尚未進行處理的請求,此時請求仍在隊列(在桶內)
  • 漏出的水則代表從隊列中出來即將發(fā)送給服務器端處理的請求,此時請求已經(jīng)離開了隊列(在桶外)

漏桶在一定程度上可以代表服務器的處理能力,請求根據(jù)先進先出(FIFO)調度算法等待處理。如果倒入水的速度小于漏水的速度,可以理解為服務器能夠處理完所有的請求,此時整體服務表現(xiàn)正常。如果倒入水的速度大于漏水的速度,那么水桶內的水會不斷增加直到最后溢出,這種情況下在水桶中的水可以理解為在隊列中等待的請求,而溢出的水則表示直接被丟棄不處理的請求。

限速配置:

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
location / {
    limit_req zone=mylimit burst=5 nodelay;
    limit_req _log_level error;
    limit_req_status 503;
    ·······
}

step1 定義請求限制空間 limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;

1. $binary_remote_addr,表明是以remote_addr為限制目標,加上binary是為了壓縮內存占用空間

2. zone=name:size,分配一個以name為名的并且大小為size的內存空間,用來存儲訪問的頻次信息

3. rate=nr/s, 如rate=1r/s表示同一個IP每秒只允許一個請求通過。

step2:定義請求限制 limit_req zone=mylimit burst=5 nodelay;

1.zone=mylimit,使用step1定義的空間

2.brust=x,表示設置一個大小為x的緩沖區(qū),超過頻次限制的請求先放入這個緩沖區(qū)。

3.nodelay,不延遲處理。

        3.1 delay,前delay個不延遲處理,burst-delay的請求延遲處理,超過burst的503. 

        3.2 nodelay/delay都不填,就按照rate,一個個處理,超過brust直接返回503.

2.limit_conn

根據(jù)特定的key來限制連接的數(shù)量,需要注意的是并不是所有的連接都會被算入其中,只有當一個連接的整個請求頭被讀取并且已經(jīng)被nginx服務器處理的時候才會算入限制中。

# 注意 應該在http里面 server 外面 
# $binanry_remote_addr 和$remote_addr 一樣 但是 減少空間
limit_conn_zone $binanry_remote_addr zone=conn_zone:1m
server{
    ...
    location / {
       # 同一時段 只有1個IP能訪問
       limit_conn conn_zone 1;
    }
}

3.limit_rate

限制用戶和服務器之間傳輸?shù)淖止?jié)數(shù),最常用的場景可能就是下載/上傳限速。

 # 語法配置
 Syntax: limit_rate_after size;
 Default:    limit_rate_after 0;
 Context:    http, server, location, if in location
 This directive appeared in version 0.8.0.
 ?
 # 示例
 location /flv/ {
     flv;
     limit_rate_after 500k;
     limit_rate       50k;
 }

limit_rate的用法非常簡單,后面跟隨的rate就是具體限速的閾值,限速指令的生效范圍是根據(jù)每個連接確定的,例如上面限定每個連接的速率為50k,也就是當客戶端發(fā)起兩個連接的時候,速率就可以變?yōu)?00k

limit_rate_after允許在傳輸了一部分數(shù)據(jù)之后再進行限速,例如上面的配置中就是傳輸?shù)那?00kbyte數(shù)據(jù)不限速,500k之后再進行限速。

limit_rate的一大特點就是能夠使用變量,這就意味著和map指令之類的進行組合就可以實現(xiàn)動態(tài)限速功能

到此這篇關于nginx限速配置的三種方法(limit_req、limit_conn、limit_rate)的文章就介紹到這了,更多相關nginx限速配置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

凯里市| 永登县| 西乌珠穆沁旗| 蚌埠市| 宁国市| 茌平县| 铅山县| 凤阳县| 伊春市| 康马县| 虞城县| 石家庄市| 河间市| 天峻县| 文昌市| 静安区| 新竹县| 舞钢市| 东乡| 新兴县| 贵溪市| 瑞安市| 德昌县| 磐安县| 新龙县| 崇仁县| 炉霍县| 山东| 睢宁县| 大姚县| 临猗县| 资兴市| 玛多县| 柳河县| 钟祥市| 三原县| 武乡县| 浙江省| 会昌县| 平度市| 噶尔县|