请求限制

(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进行压力测试。
Nginx学习笔记——请求限制-LMLPHP
使用limit_req zone=req_zone;,测试发现20个请求,失败了19个。
Nginx学习笔记——请求限制-LMLPHP
使用limit_req zone=req_zone burst=3 nodelay;,测试发现20个请求,失败了16个(相比上面的结果,有三个是非延时建立请求)。
Nginx学习笔记——请求限制-LMLPHP
使用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个(猜测:连接可以建立在一个请求上,所以并发程度高)。

10-04 17:39