http {
limit_req_zone $binary_remote_addr zone=perip:30m rate=60r/s;
}
rate=60r/s
表示处理请求的平均速度(每个请求之间至少要间隔(1000/60≈16.7ms),超出的请求将会进入令牌桶中,例如在10ms内发出5个请求则只有一个能得到处理,其余4个会进入令牌桶(令牌桶内的令牌可以满足这4个额外请求的时候,如果不满足将会返回503或者自定义的status))
server / location {
limit_req zone=perip burst=25 nodelay;
limit_req_status 444;
}
burst=25
表示令牌桶中有25个令牌,超出的请求就会进入到令牌桶
nodelay
表示将令牌桶内的所有请求直接发出,然后每隔16.7ms恢复一个令牌
如果没有指定nodelay则会排队发出请求,即等够16.7ms发出一个请求同时恢复一个令牌