我曾尝试使用nginx(http://nginx.org/)来限制每分钟的请求数量。例如我的设置是:
server{
limit_req_zone $binary_remote_addr zone=pw:5m rate=20r/m;
}
location{
limit_req zone=pw nodelay;
}
我在Nginx上发现的是,即使我每分钟尝试1次请求,我也可以在那一分钟内多次回来。当然,快速刷新页面会给我一个限制页面消息,这是一个“503服务暂时不可用”的返回代码。
我想知道可以应用哪种设置将请求完全限制为每分钟20个请求。我不是在寻找防洪,因为Nginx提供了这一点,如果一个页面被不断刷新,例如它限制了用户并让他们在一段时间之后有一些延迟(除非你应用了nodelay设置)。
如果除了HAProxy之外还有Nginx的替代品(因为它非常慢)。此外,我在Nginx上的设置充当了真实站点的反向代理。
答案 0 :(得分:4)
正确的有两件事:
请注意:
因为您在下面说过,您希望限制请求,您需要limit_req指令。特别是每分钟最多获得5个请求,请尝试添加以下内容:
http {
limit_req_zone $binary_remote_addr zone=example:10m rate=5r/m;
}
server {
limit_req zone=example burst=0 nodelay;
}
注意:显然将这些添加到现有的http /服务器块