Nginx限制連線和請求

2022-07-22 11:30:14 字數 1931 閱讀 4027

一.ngx_http_limit_conn_module

對同乙個ip/server的連線數做限制.

配置指令:

limit_conn_zone

語法: limit_conn_zone $variable zone=name:size;

預設值: none

配置段: http

$veriable:常見取值

a.$binary_remote_addr 以客戶端ip作為key

b.$server_name 以server作為key

示例:

limit_conn_zone $binary_remote_addr zone=addr:10m;

以客戶端的ip位址做key,配置了乙個名稱為addr的共享記憶體為10m空間的限制域.如果記憶體空間被耗盡,則返回503錯誤.

使用$binary_remote_addr變數, 可以將每條狀態記錄的大小減少到64個位元組,這樣1m的記憶體可以儲存大約1萬6千個64位元組的記錄

當多個 limit_conn 指令被配置時,所有的連線數限制都會生效

http, server, location段配置:

limit_conn addr 4

; #同一ip,同一時間,只允許有4個連線

二.ngx_http_limit_req_module

對同乙個ip的請求數做限制

配置指令:

limit_req_zone

語法: limit_req_zone $variable zone=name:size rate=rate;

預設值: none

配置段: http

示例:

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

說明:以客戶端ip為key,建立了乙個共享記憶體為10m的limit限制域.每秒可新增1個請求.

http, server, location段配置:

limit_req zone=limit burst=5; //漏桶原理,使用limit限制域限制的速率,每秒1個來處理請求,在處理未完成時,允許有5個請求放在快取區,其餘的請求都要等待.所以單個ip限制的最高峰值為5.

如果不希望這些請求等待,直接返回拒絕結果,加nodelay;則其餘請求直接返回預設的503;

limit_req zone=limit burst=5 nodelay;

如果不加nodelay:

單個ip需要把併發在控制在burst限制內

如果加了nodelay:

單個ip不但需要把併發控制在burst內,而且不超出rate(速率)限制.

三.兩者的區別

1.limit_conn是針對連線,即tcp連線,通過三次握手而建立的乙個完整狀態機制,來建立乙個連線。(keep-alive的出現就是為了減少這種握手的次數,是同一連線可以復用.減少開銷)

2.limit_req是針對請求,即http請求.

開啟乙個網頁,**並茂的那種,通常瀏覽器可能同時建立1-4個連線(依據不同瀏覽器和傳輸協議和keep-alive等,實際有所不同),然後由這些連線來發出幾十個乃至上百個請求.

瀏覽器儘管同時能開啟多個連線,但limit_conn限制了同時開啟的連線個數.如同時只有1個,則其餘的都需要等待.

連線開啟後,就會盡快處理請求,比如返回文字或;limit_req則限制了同一ip在同一時間內請求的速度.比如每秒1個,超過這個速率限制,都會等待或不處理.

如果配置了keep-alive,則乙個連線可以處理很多個請求,只要這些請求在limit_req的限制下.

簡而言之,如果將web server比作遊樂場,limit_conn限制了通道數目,有幾條;limit_req限制了每個通道,可以通行速度.

nginx限制併發連線請求數的方法

簡介 限制併發連線數的模組為 http limit conn module,位址 限制併發請求數的模組為 http limit req module,位址 這兩個模組都是預設編譯進nginx中的。限制併發連線數 示例配置 limit conn zone key zone name size 定義併發...

Nginx的請求限制

連線頻率的限制 limit conn module 請求頻率的研製 limit req module tcp三次握手,一次連線可以建立多次http請求 連線限制的語法 語法1 語法2 請求限制的語法 語法1 語法2 limit conn zone 連線限制 binary remote addr zo...

nginx的請求限制

總結 http請求是建立在一次tcp連線的基礎之上。一次tcp請求至少產生一次http請求。配置語法 示例 limit conn conn zone 1 同一時刻只允許乙個ip的請求過來。示例 說明 binary remote addr 客戶端位址,不用 remote addr,是因為 binary...