http.ratelimit
ratelimit用于限制基于客户端IP地址的请求处理速率。过多的请求将以返回错误429(Too Many Request),并携带X-RateLimit-RetryAfter头信息。
示例
单个资源
ratelimit methods path rate burst unit
- methods 是它将匹配的请求方法(逗号分开);
- path 是应用速率限制的文件或目录;
- rate 是一个时间单位内的最大请求次数(r/s、r/m、r/h、r/d、r/w)(例如1);
- burst 是客户端可以超过的最大突发大小;burst>=rate(如2);
- unit 是时间间隔(当前支持:秒、分钟、小时、日、周)。
多个资源
ratelimit methods rate burst unit {
whitelist CIDR
resources
}
- whitelist 是可信IP白名单的关键词,CIDR是你不想执行速率限制的IP范围,白名单是一个通用规则,它不会针对特定的资源;
- resources 是应用速率限制的文件/目录列表,每行一个。
注意:如果你不想将速率限制应用于一些特殊的资源,在路径前面加上^。
将客户端限制为每秒2次请求(突发3次),限制为/r下的任何方法和资源
ratelimit * /r 2 3 second
如果请求来自1.2.3.4或192.168.1.0/30(192.168.1.0 ~ 192.168.1.3),不要执行速率限制,对于列出的路径,如果请求方法是GET或POST,则将客户机限制为每分钟2个请求(突发2次),并且总是忽略/dist/app.js
ratelimit 2 2 minute {
whitelist 1.2.3.4/32
whitelist 192.168.1.0/30
/foo.html
/api
^/dist/app.js
}