设置访问的并发量,一秒只能接受一个请求(限制客户端请求的并发量为1个)

在配置文件里面编写,访问/usr/local/nginx/html/search/这个目录下的资源

nginx 搭建访问控制 nginx 控制访问量_nginx 搭建访问控制


nginx 搭建访问控制 nginx 控制访问量_配置文件_02


这里的根表示的是/usr/local/nginx/html/

建立共享的子目录search

nginx 搭建访问控制 nginx 控制访问量_nginx 搭建访问控制_03


给子目录下面放一个图片

nginx 搭建访问控制 nginx 控制访问量_nginx 搭建访问控制_04


nginx 搭建访问控制 nginx 控制访问量_nginx 搭建访问控制_05


$binary_remote_addr :表示通过remote_addr这个标识来做限制,“binary_”的目的是缩写内存占用量,是限制同一客户端ip地址

znotallow=one:10m:表示生成一个大小为10M,名字为one的内存区域,用来存储访问的频次信息

rate=1r/s:表示允许相同标识的客户端的访问频次,这里限制的是每秒1次,即每秒只处理一个请求,还可以有比如30r/m的,即限制每2秒访问一次,即每2秒才处理一个请求。

进行语法检测

nginx 搭建访问控制 nginx 控制访问量_子目录_06


重新加载

nginx 搭建访问控制 nginx 控制访问量_子目录_07


客户端测试:一次并发请求10次,设置的并发量是1,因此只会成功1个

nginx 搭建访问控制 nginx 控制访问量_配置文件_08


nginx 搭建访问控制 nginx 控制访问量_子目录_09


nginx 搭建访问控制 nginx 控制访问量_客户端_10


nginx 搭建访问控制 nginx 控制访问量_客户端_11


设置burst

编辑配置文件,设置burst=5

burst=5:重点说明一下这个配置,burst爆发的意思,这个配置的意思是设置一个大小为5的缓冲区当有大量请求(爆发)过来时,超过了访问频次限制的请求可以先放到这个缓冲区内等待,但是这个等待区里的位置只有5个,超过的请求会直接报503的错误然后返回。

znotallow=one :设置使用哪个配置区域来做限制,与上面limit_req_zone 里的name对应

nginx 搭建访问控制 nginx 控制访问量_nginx 搭建访问控制_12


检测语法和重新加载服务

nginx 搭建访问控制 nginx 控制访问量_子目录_13


测试

nginx 搭建访问控制 nginx 控制访问量_子目录_14


虽然并发量为1,但是burst的值是5,最多可以访问5次,并且5次都成功

可以将多余的请求暂时缓存起来

如果一次并发请求超过5次,超过的请求就会失败

nginx 搭建访问控制 nginx 控制访问量_子目录_15


nginx 搭建访问控制 nginx 控制访问量_子目录_16


当超过5个并发,则会出现失败的请求

nginx 搭建访问控制 nginx 控制访问量_子目录_17


设置速率

设置每秒访问50k,访问5次,444*5 = 2220/50约44秒

nginx 搭建访问控制 nginx 控制访问量_客户端_18

nginx 搭建访问控制 nginx 控制访问量_nginx 搭建访问控制_19


nginx 搭建访问控制 nginx 控制访问量_子目录_20