Nginx配置请求限制
nginx中有两个模块对请求进行限制:
- ngx_http_limit_conn_module 模块
- ngx_http_limit_req_module 模块
其中:
ngx_http_limit_conn_module 模块主要针对会话的并发连接数控制,例如限制每个IP的并发连接数。
ngx_http_limit_req_module 模块可以限制给定会话的特殊情况下的请求数,例如配置特定时间间隔内每个IP的请求数量限制。
ngx_http_limit_conn_module 模块
ngx_http_limit_conn_module模块用于限制每个定义的键的连接数,特别是来自单个IP地址的连接数。
并非所有连接都被计数。仅当连接具有服务器正在处理的请求并且已读取整个请求标头时,才对连接进行计数。
配置示例:
http {
# 定义会话数据区域one,容量为10M。
limit_conn_zone $binary_remote_addr zone=one:10m;
...
server {
...
location /download/ {
limit_conn one 1; # 连接数限制为 1
}
}
}
定义 /download/ 目录下的每个IP只能创建 1 个连接。
指令 limit_zone (弃用)
注意,该属性在 1.1.8 版本中被定义为过时,并且在 1.7.6 版本中删除,需要使用等效的指令: limit_conn_zone
-
语法:
limit_zone <zone_name> <$variable> <size>
-
作用域:http
该指令定义一个数据区记录会话的状态信息。
$variable定义了判断会话的变量。
size表示该数据区占用的总容量。
例如:
limit_zone one $binary_remote_addr 10m;
定义了会话数据区名称为one
,容量为10M,使用 $binary_remote_addr 变量作为区分会话的标识