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
}