一、Nginx的请求限制
1.1 请求限制
限制主要有两种类型:
- 连接限制: limit_conn_module
- 请求限制: limit_req_module
对于连接限制 limit_conn_module模块
该ngx_http_limit_conn_module模块用于限制每个定义的密钥的连接数量,特别是来自单个IP地址的连接数量。
并非所有连接都被计算在内 ,只有在服务器处理请求并且已经读取了整个请求头时才计算连接。
- 连接频率限制的配置:
Syntax: limit_conn_zone key zone=name:size;
Default: —
Context: http
#可理解在内存中开辟一个区域对于指定的nginx变量(key,例如:binary_remote_addr)进行限制。name表示申请的空间的名字,size表示申请空间的大小。
Syntax: limit_conn zone number;
Default: —
Context: http, server, location
#第二部分zone就是第一部分设置的名字name,number表示进行并发的限制。例如设置为1,表示一个时间段只能有一个。
- 用法
http {
# ...其它代码省略...
# 开辟一个10m的连接空间,命名为addr
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
...
location /download/ {
# 服务器每次只允许一个IP地址连接
limit_conn addr 1;
}
}
}
请求限制 ngx_http_limit_req_module模块
用于限制每一个定义的密钥的请求的处理速率,特别是从一个单一的IP地址的请求的处理速率。限制是使用“泄漏桶”方法完成的
- 请求限制的配置:
Syntax: limit_req_zone key zone=name:size rate=rate;
Default: —
Context: http
#第一部分配置和连接配置相似,rate表示速率,以秒s为单位(rate=1r/s)
Syntax: