Featured image of post nginx常用模块

nginx常用模块

本文阅读量

nginx常用模块

对客户端限制相关配置

限制请求数

场景

秒杀、抢购并发限制,防止攻击

配置

limit_req_zone,用来限制单位时间内的请求数,即速率限制,采用的漏桶算法

1
2
3
语法: limit_req_zone $variable zone=name:size rate=rate;
默认值: none
配置段: http

范例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
http{
	limit_req_zone $binary_remote_addr  zone=one:10m rate=1r/s;
	



可选参数:
rate=10r/s  的意思是允许1秒钟不超过10个请求
burst=5 允许超过频率限制的请求数不多于5个,假设1、2、3、4秒请求为每秒9个,那么第5秒内请求15个是允许的,反之,如果第一秒内请求15个,会将5个请求放到第二秒,第二秒内超过10的请求直接503,类似多秒内平均速率限制。
nodelay 超过的请求不被延迟处理,设置后15个请求在1秒内处理
}

解释

$binary_remote_addr变量,可以将每次请求记录的大小减少到64个字节,这样1M的内存可以保存大约1万6千个64字节的记录。如果限制域的存储空间耗尽了(大于10m),对于后续所有请求,服务器都会返回 503 (Service Temporarily Unavailable)错误。

zone=one 表示设置了名为“one”,大小为10兆字节

rate=10r/s 的意思是允许1秒钟不超过10个请求,速度可以设置为每秒处理请求数和每分钟处理请求数,其值必须是整数,所以如果你需要指定每秒处理少于1个的请求,2秒处理一个请求,可以使用 “30r/m”

使用 Hugo 构建
主题 StackJimmy 设计