1. 程式人生 > >Nginx學習筆記——請求限制

Nginx學習筆記——請求限制

請求限制

(1)連線頻率限制:limit_conn_module
(2)請求頻率限制:limit_req_module

配置語法

連線限制配置語法

Syntax:limit_conn_zone key zone=name:size;
Default:預設無
Context:http
name:空間名字,size:空間大小

併發數量
Syntax:limit_conn zone number;
Default:預設無
Context:http,server,location
zone應該是上面的zone配置的名字

測試

/etc/nginx/conf.d/default.conf

    limit_conn_zone $binary_remote_addr zone=conn_zone:1m;
    limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;
server {
	#..............
    location / {
        root   /opt/app/code;
	#limit_conn conn_zone 1;
	#limit_req zone=req_zone burst=3 nodelay;
	#limit_req zone=req_zone burst=3;
	#limit_req zone=req_zone;
        index  index.html index.htm;
    }
	# ...................
}

使用ab -n 20 -c 20 http://192.168.174.132/1.html進行壓力測試。
在這裡插入圖片描述
使用limit_req zone=req_zone;,測試發現20個請求,失敗了19個。
在這裡插入圖片描述
使用limit_req zone=req_zone burst=3 nodelay;,測試發現20個請求,失敗了16個(相比上面的結果,有三個是非延時建立請求)。
在這裡插入圖片描述
使用limit_req zone=req_zone burst=3;,測試發現20個請求,失敗了16個(相比上面的結果,有三個是延時建立請求,阻塞時的請求,一秒1個,故大約消耗3秒)。

請求限制配置語法

Syntax:limit_req_zone key zone=name:size rate=rate;
Default:預設無
Context:http

Syntax:limit_req_zone zone=name [burst=number] [nodelay];
Default:預設無
Context:http,server,location
注:burst表示後續響應的個數,nodelay表示是否延時。

測試

使用limit_conn conn_zone 1;,測試發現20個連線,失敗了0個(猜測:連線可以建立在一個請求上,所以併發程度高)。