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個(猜測:連線可以建立在一個請求上,所以併發程度高)。