### **1.连接限制**
~~~
Syntax: limit_conn_zone key zone=name:size;
Default: ——
Context: http
~~~
limit_conn_zone :开辟一块空间
key:以什么作为key存储,比如可以用ip作为限制,则ip为key
zone=name:size:name为申请空间的名字,方便后面其他调用,size表示大小
~~~
Syntax: limit_conn zone number;
Default: ——
Context: http,server,location
~~~
zone:表示空间名字
number:表示同一时间运行的并发个数
*****
#### **测试:**
~~~
limit_conn_zone $binary_remote_addr zone=conn_zone:1m;
location / {
root /opt/app/code;
limit_conn conn_zone 1;
index index.html index.htm;
}
~~~
![](https://img.kancloud.cn/56/c6/56c6910e85784ce3ddeacae583fa3593_1887x872.png)
### **2.请求限制**
~~~
Syntax: limit_req_zone key zone=name:size rate=rate;
Default: ——
Context:http
~~~
key:以什么作为key存储,比如可以用ip作为限制,则ip为key
zone=name:size:name为申请空间的名字,方便后面其他调用,size表示大小
rate表示的是请求的速率
~~~
Syntax: limit_req zone=name [burst=number][nodelay];
Default:——
Context:http,server,location
~~~
zone:表示空间名字
number:表示同一时间运行的并发个数
*****
#### **测试**
①测试每秒只允许一个请求
~~~
# 设置空间名为req_zone 大小为1m,速率为每秒1个,地址的二进制的客户端地址用于节省空间
limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;
location / {
root /opt/app/code;
limit_req zone=req_zone;
index index.html index.htm;
}
~~~
![](https://img.kancloud.cn/01/d0/01d02cae9b51f8270e84cce9a9b24641_1920x892.png)
②测试每秒只允许一个请求,3个延迟响应
~~~
# 设置空间名为req_zone 大小为1m,速率为每秒1个,地址的二进制的客户端地址用于节省空间
limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;
location / {
root /opt/app/code;
limit_req zone=req_zone burst=3 nodelay;
index index.html index.htm;
}
~~~
![](https://img.kancloud.cn/bb/4a/bb4ac154cc98414ce0f815a51e9f8338_1920x944.png)