我可以使用limit_req
速率限制对我的服务器的所有请求。
但是,我想取消对某些 IP 地址(即白名单)的速率限制,并对某些其他地址(即我希望低至 1r/s 的某些 IP)使用不同的速率限制。
我尝试使用条件(例如if ( $remote_addr = "1.2.3.4" ) {}
),但这似乎只适用于重写规则,不适用于速率限制规则。
我们决定在我们的网站上试验和限制每分钟请求数,而不是每秒请求数。但是,在这种情况下,我对突发参数感到困惑。
我的印象是,当您使用“nodelay”标志时,速率限制工具的作用就像一个令牌桶,而不是一个漏桶。既然如此,桶的大小等于突发参数,每次你违反策略(比如 1 req/s),你必须在桶中放入一个令牌。一旦存储桶已满(等于突发设置),您将看到一个 503 错误页面。
我还认为,一旦违规者停止违反政策,就会以 1 个令牌/秒的速度从存储桶中删除一个令牌,让他重新获得对该站点的访问权限。
假设我有上述正确,我的问题是当我开始调节每分钟访问时会发生什么?如果我们选择每分钟 60 个请求,令牌桶以什么速率补充?