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

nginx控制連接數(shù)及訪問速率的實現(xiàn)

 更新時間:2024年12月27日 09:49:59   作者:曹朋羽  
本文主要介紹了Nginx中ngx_http_limit_conn_module和ngx_http_limit_req_module模塊的使用,用于控制連接數(shù)和請求速率,具有一定的參考價值,感興趣的可以了解一下

連接數(shù)控制

ngx_http_limit_conn_module 模塊用來限制每個定義的key對應(yīng)的連接數(shù)。

不是所有的連接都會被計數(shù),當(dāng)一個連接請求被服務(wù)端處理并且這個請求頭被讀取時候,這個連接被算作一個連接。

limit_conn_zone key zone=name:size;

limit_conn_zone 用來定義在 http 塊中定義一個共享內(nèi)存區(qū)域,存儲客戶端的連接數(shù)。key用來區(qū)分不同的客戶端連接。name用來指定區(qū)域的名稱,size指定內(nèi)存大小。key可以是文本或變量,如果一個請求的key是空不會進(jìn)行請求計數(shù)。這里實際就是維護(hù)了一個內(nèi)存map區(qū)域(key,count)。

如下:

limit_conn_zone $binary_remote_addr zone=addr:10m;

開辟一個10m的內(nèi)存區(qū)域,名稱為addr,key為b i n a r y r e m o t e a d d r 。 binary_remote_addr。binaryr?emotea?ddr。binary_remote_addr表示按客戶端 IP 地址進(jìn)行計數(shù)。zone定義完成后主要是為了limit_conn 指令限連接數(shù)使用。

limit_conn zone number;

limit_conn指令用于限制同一客戶端的最大連接數(shù)。要與 limit_conn_zone 配合使用。這里的zone就是引用的limit_conn_zone 定義的區(qū)域名稱,number是限制最大連接數(shù)。當(dāng)超過最大連接數(shù)時,會返回特定的錯誤。默認(rèn)是503.可以通過limit_conn_status code; 來指定特定的錯誤碼。

limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn_status 429;
server {
    location /download/ {
        limit_conn addr 2;
}

上面表示開辟一個10M的內(nèi)存區(qū)域名為addr,用來統(tǒng)計每個客戶端IP($binary_remote_addr)的請求數(shù)量,限制每個IP最多只能有2個并發(fā)連接。如果超過并發(fā)數(shù),則返回429錯誤。

limit_conn指令可以重復(fù)出現(xiàn)

limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;

server {
    ...
    limit_conn perip 5;
    limit_conn perserver 100;
}

如上表示限制每個客戶端最大并發(fā)數(shù)是5,一個server同時最大支持連接是100.

https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html

請求速率控制

處理限制客戶端連接數(shù)外,還可以通過ngx_http_limit_req_module模塊來限制客戶端的請求速率。指令和限制連接數(shù)差不多。

limit_req_zone key zone=name:size rate=rate ;

limit_req_zone 指令用來定義請求速率限制內(nèi)存區(qū)域,key同limit_zone指令,用來標(biāo)識計算速率的key值,name是內(nèi)存區(qū)域名稱,size是內(nèi)存大小,rate是速率,單位 每秒是(r/s),沒分鐘是 (r/m)。該指令只能在http塊使用。

limit_req_zone $binary_remote_addr zone=limitbyaddr:10m rate=3r/s;

上面配置表示使用客戶端IP為key,統(tǒng)計客戶端請求速率,內(nèi)存大小為10m。1M的內(nèi)存大約可存儲16000個IP的統(tǒng)計信息,所以10M大概可以統(tǒng)計16萬個IP。 內(nèi)存區(qū)域名稱為limitbyaddr,控制客戶端請求速率為每秒3個請求。

limit_req指令限制速率

limit_req zone=name [burst=number] [nodelay | delay=number];

limit_req用來設(shè)置請求速率,zone指定使用的limit_req_zone 設(shè)定的區(qū)域名稱。這樣nginx會安裝zone指定的速率來控制客戶端請求。對應(yīng)超過給定速率的請求,nginx 會進(jìn)行拒絕處理。防止過多的請求對服務(wù)器造成壓力。

如果zone的內(nèi)存耗盡后,nginx會移除最早的key。如果此時空間還不夠存儲新的請求記錄,則nginx或返回503錯誤。

然而對應(yīng)一個網(wǎng)站或應(yīng)用來說,訪問流量起始不是平順的,存在波動,如果波動超過速率就進(jìn)行拒絕其實這也不是我們想要的,影響應(yīng)用整體穩(wěn)定性。這個時候可以使用burst參數(shù)來處理突發(fā)流量。burst 參數(shù)允許請求數(shù)量短時間內(nèi)超過正常的速率限制,最多可達(dá)到指定的 burst 值。

配合burst使用還有一個 delay和nodelay參數(shù)。nodelay 表示在處理突發(fā)請求時,不會延遲這些突發(fā)請求的處理。如果沒有這個參數(shù),突發(fā)的請求會被排隊并延遲,直到可以按照速率限制處理為止。

limit_req_zone $binary_remote_addr zone=limitbyaddr:10m rate=3r/s;
server {
    location / {
        limit_req zone=limitbyaddr burst=12 delay=9;
    }
}

上面配置正常每秒鐘限制3個請求 ,允許最大峰值波動請求是12個,第9個超過速率的請求會放入隊列延遲處理。

超過限制速率被拒絕的請求,也可以自動義狀態(tài)碼,通過limit_req_status 指令設(shè)置。

到此這篇關(guān)于nginx控制連接數(shù)及訪問速率的實現(xiàn)的文章就介紹到這了,更多相關(guān)nginx控制連接數(shù)及訪問速率內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx配置終極版學(xué)習(xí)指南(可能全網(wǎng)最詳細(xì))

    Nginx配置終極版學(xué)習(xí)指南(可能全網(wǎng)最詳細(xì))

    Nginx是一個高性能的HTTP和反向代理服務(wù)器,特點是占用內(nèi)存少,并發(fā)能力強(qiáng),事實上Nginx的并發(fā)能力確實在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)好,這篇文章主要介紹了Nginx配置終極版學(xué)習(xí)指南的相關(guān)資料,需要的朋友可以參考下
    2026-02-02
  • nginx、Apache、IIS服務(wù)器解決 413 Request Entity Too Large問題方法匯總

    nginx、Apache、IIS服務(wù)器解決 413 Request Entity Too Large問題方法匯總

    這篇文章主要介紹了nginx、Apache、IIS三種服務(wù)器解決413 Request Entity Too Large問題的方法集合,需要的朋友可以參考下
    2014-05-05
  • 如何讓你的Nginx支持分布式追蹤詳解

    如何讓你的Nginx支持分布式追蹤詳解

    分布式追蹤系統(tǒng)(Tracing)旨在分析請求背后調(diào)用了哪些服務(wù),服務(wù)的調(diào)用順序、耗時、錯誤原因等,下面這篇文章主要給大家介紹了關(guān)于如何讓你的Nginx支持分布式追蹤的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Nginx FastCGI緩存的實現(xiàn)示例

    Nginx FastCGI緩存的實現(xiàn)示例

    Nginx的FastCGI緩存是一種性能優(yōu)化手段,通過緩存動態(tài)內(nèi)容減少對后端服務(wù)器的請求,提高系統(tǒng)響應(yīng)速度,具有一定的參考價值,感興趣的可以了解一下
    2024-12-12
  • Nginx 如何部署指定文件夾下的項目(本地測試)

    Nginx 如何部署指定文件夾下的項目(本地測試)

    這篇文章主要介紹了Nginx 如何部署指定文件夾下的項目(本地測試),分為配置vue.config.js,指定生成環(huán)境的包,配置路由模式為hash(history模式刷新后,找不到頁面),本文講解的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • 詳解nginx前端根據(jù)$remote_addr分發(fā)方法

    詳解nginx前端根據(jù)$remote_addr分發(fā)方法

    這篇文章主要介紹了詳解nginx前端根據(jù)$remote_addr分發(fā)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • nginx url自動加斜杠及301重定向的問題

    nginx url自動加斜杠及301重定向的問題

    這篇文章主要介紹了nginx url自動加斜杠及301重定向的問題的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • Nginx 搭建域名訪問環(huán)境的詳細(xì)過程

    Nginx 搭建域名訪問環(huán)境的詳細(xì)過程

    這篇文章主要介紹了Nginx 搭建域名訪問環(huán)境的詳細(xì)過程,通過示例代碼講解了Nginx 搭建轉(zhuǎn)發(fā)網(wǎng)關(guān)進(jìn)行負(fù)載均衡的相關(guān)操作,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • Nginx配置缺少導(dǎo)致CSS不起作用的問題及解決方法

    Nginx配置缺少導(dǎo)致CSS不起作用的問題及解決方法

    在Web開發(fā)中,確保樣式表正確加載是前端顯示正常工作的關(guān)鍵,然而,有時候即使CSS文件的路徑和代碼本身沒有問題,CSS樣式也可能無法正確應(yīng)用,本文將分享一個常見的問題——Nginx配置缺少導(dǎo)致的CSS不起作用,以及如何解決這個問題,感興趣的朋友一起看看吧
    2024-07-07
  • nginx下支持PATH_INFO的方法實例詳解

    nginx下支持PATH_INFO的方法實例詳解

    這篇文章主要介紹了nginx下支持PATH_INFO的方法,結(jié)合實例形式詳細(xì)分析了nginx下使用PATH_INFO模式的具體方法與相關(guān)使用技巧,需要的朋友可以參考下
    2016-02-02

最新評論

台北市| 吉林省| 广昌县| 黄骅市| 雅安市| 宁强县| 兴城市| 满洲里市| 新邵县| 晋宁县| 抚顺市| 高青县| 年辖:市辖区| 浪卡子县| 繁峙县| 漳平市| 准格尔旗| 碌曲县| 辛集市| 横山县| 濮阳县| 宜兴市| 大宁县| 遵义市| 安平县| 神池县| 昆明市| 西乌珠穆沁旗| 临江市| 格尔木市| 清涧县| 西丰县| 高青县| 云阳县| 成安县| 通许县| 仁怀市| 阿合奇县| 黎平县| 荥阳市| 聂荣县|