- 控制速率
通过限制客户端每秒发送请求的速率来控制并发量,从而保护服务端免受恶意请求的攻击。
Nginx中提供了limit_req_zone和limit_req指令,前者用于定义限制区域,后者用于配置请求限制。
具体配置方法如下:
定义限制区域,设置最大限制数和刷新时间
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
针对指定的URI进行限制
location /login/ {
# 打开请求限制
limit_req zone=one burst=5 nodelay;
…
}
上述配置中,limit_req_zone定义了一个限制区域one,大小为10MB,限制速率为每秒1个请求。在location /login/中,使用limit_req指令对该URI进行限制,burst=5表示最大突发请求量为5个,nodelay表示不等待即使被限制也会尽快响应。
- 控制并发连接数
通过限制并发连接数来控制服务端的负载压力,保证服务的稳定性。
Nginx中提供了limit_conn_zone和limit_conn指令,前者用于定义限制区域,后者用于配置连接限制。
具体配置方法如下:
定义限制区域,设置最大连接数
limit_conn_zone $binary_remote_addr zone=addr:10m;
针对指定的URI进行连接限制
location /api/ {
# 打开连接限制
limit_conn addr 10;
…
}
上述配置中,limit_conn_zone定义了一个限制区域addr,大小为10MB,没指定速率,所以默认是不限速的。在location /api/中,使用limit_conn指令对该URI进行限制,10表示最大连接数为10个。