你可以为nginx的每秒请求限制设置一个例外吗?

时间:2013-10-17 16:22:16

标签: nginx request limit

我们尝试通过限制每秒的请求数来保存nginx资源:

http {
    limit_req_zone  $binary_remote_addr  zone=gulag:10m  rate=2r/s;

    server
    {
        location / {
         proxy_pass http://0.0.0.0:8181;
         limit_req   zone=gulag  burst=40;
        }
    }
}

但是,我们公司的大多数员工也是我们网站的重度用户。由于公司中的每个人似乎都来自同一个IP地址,因此获得了503个错误,因为nginx认为所有流量都来自一个用户。我们可以将ip添加为每秒请求限制的例外吗?

1 个答案:

答案 0 :(得分:6)

是的,你可以。只需引用the documentation

  

键是指定变量的任何非空值(空值不计算)。

因此,您可以使用geomap这样的模块来实现目标:

geo $limited_net {
    default      1;
    10.1.0.0/16  0;
}

map $limited_net $addr_to_limit {
    0  "";
    1  $binary_remote_addr;
}

limit_req_zone  $addr_to_limit  zone=gulag:10m  rate=2r/s;