官网说明
- 设置共享内存区域和请求的最大突发大小。
- 如果请求速率超过为区域配置的速率,则延迟其处理,以便以定义的速率处理请求。
- 过多的请求将被延迟,直到它们的数量超过最大突发大小,在这种情况下请求以错误终止。
- 默认情况下,最大突发大小等于零。
配置结构
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
...
server {
...
location /search/ {
limit_req zone=one burst=5;
}
}
}
$binary_remote_addr
:变量名,用以区分不同的规则
zone=
:记录区名为one
10m
:共享内存区域大小,记录区
rate
:每秒速率
/search/
:指定的目录
burst
:达到的突发数量,触发报错
上面的配置表示允许每秒平均不超过1个请求,突发不超过5个请求。
意思就是:
1秒只能发送一个请求,如果你在延迟内超出5个请求就会报错。这个不好说明,你一直刷新就知道了。
停一会后再刷新,会回复正常。
我测试的是安装完就有的那个index.html文件,所以我的配置是这样的
如果不想延迟,就是如果你用谷歌浏览器的话,标签的图标会一直转,那是被延迟了。
加了下面这个就不会转了,而是当超出突发就会报错。
limit_req zone=one burst=5 nodelay;
在上面的基础上加了个nodelay
,用你单身二十几年的手速去试一下吧!
以我的手速,还是觉得延迟的方案比较有效。