设置访问的并发量,一秒只能接受一个请求(限制客户端请求的并发量为1个)
在配置文件里面编写,访问/usr/local/nginx/html/search/这个目录下的资源
这里的根表示的是/usr/local/nginx/html/
建立共享的子目录search
给子目录下面放一个图片
$binary_remote_addr :表示通过remote_addr这个标识来做限制,“binary_”的目的是缩写内存占用量,是限制同一客户端ip地址
znotallow=one:10m:表示生成一个大小为10M,名字为one的内存区域,用来存储访问的频次信息
rate=1r/s:表示允许相同标识的客户端的访问频次,这里限制的是每秒1次,即每秒只处理一个请求,还可以有比如30r/m的,即限制每2秒访问一次,即每2秒才处理一个请求。
进行语法检测
重新加载
客户端测试:一次并发请求10次,设置的并发量是1,因此只会成功1个
设置burst
编辑配置文件,设置burst=5
burst=5:重点说明一下这个配置,burst爆发的意思,这个配置的意思是设置一个大小为5的缓冲区当有大量请求(爆发)过来时,超过了访问频次限制的请求可以先放到这个缓冲区内等待,但是这个等待区里的位置只有5个,超过的请求会直接报503的错误然后返回。
znotallow=one :设置使用哪个配置区域来做限制,与上面limit_req_zone 里的name对应
检测语法和重新加载服务
测试
虽然并发量为1,但是burst的值是5,最多可以访问5次,并且5次都成功
可以将多余的请求暂时缓存起来
如果一次并发请求超过5次,超过的请求就会失败
当超过5个并发,则会出现失败的请求
设置速率
设置每秒访问50k,访问5次,444*5 = 2220/50约44秒