通过“ $ host $ request_uri”映射“ limit_req”规则

时间:2019-04-02 18:37:32

标签: nginx nginx-reverse-proxy nginx-config

我最近已经开始为我的一台服务器设置一些速率限制,并且在设置反向代理时如何仅通过location块限制特定的url遇到了很多问题。

对于每个新块,我都必须输入几乎相同的条目,因此我决定应该找到另一种方法。

我已经尝试使用map来完成该任务,但是我遇到了从未定义变量的问题。

根据ngx_http_map_module,看起来应该是这样。

http {
# Requests
  limit_req_zone $http_x_forwarded_for zone=safe:10m rate=30r/s;
  limit_req_zone $http_x_forwarded_for zone=auth:10m rate=1r/s;
  limit_req_zone $http_x_forwarded_for zone=api:10m rate=50r/s;

  map $host$request_uri $req_rules {
    "website1.com/api/*" "zone=api burst=18 nodelay";
    "website2.com/login/*" "zone=auth burst=2 nodelay";
    default "zone=safe burst=12 nodelay";
  }

  limit_req $req_rules;
  limit_req_status 429;
}

我希望它能正常工作,但是最终没有被定义。

0 个答案:

没有答案
相关问题