Nginx速率限制仅在某个位置获取或发布请求

Nginx速率限制仅在某个位置获取或发布请求,nginx,nginx-location,nginx-config,rate-limiting,Nginx,Nginx Location,Nginx Config,Rate Limiting,我在nginx中配置了一台服务器,并使用以下代码创建我的速率限制区域: limit\u req\u zone$key zone=six\u zone:10m速率=60r/m 在我所在的位置,我使用一个模块来处理请求。此位置支持GET、POST和DELETE方法。我试图限制只获取该位置的请求。这是我认为可能有效的方法,但事实并非如此 location /api/ { if ($request_method = GET) { limit_req zone=six_zone;

我在nginx中配置了一台服务器,并使用以下代码创建我的速率限制区域:

limit\u req\u zone$key zone=six\u zone:10m速率=60r/m

在我所在的位置,我使用一个模块来处理请求。此位置支持GET、POST和DELETE方法。我试图限制只获取该位置的请求。这是我认为可能有效的方法,但事实并非如此

location /api/ {
    if ($request_method = GET) {
        limit_req zone=six_zone;
    }
    reqfwder;
}
对我如何处理这个问题有什么帮助或指点吗?谢谢。

希望这有帮助

在NGINX配置的http上下文中,添加以下行:

http {
  ... # your nginx.conf here
  
  # Maps ip address to $limit variable if request is of type POST
  map $request_method $limit {
    default         "";
    POST            $binary_remote_addr;
  }
  
  # Creates 10mb zone in memory for storing binary ips
  limit_req_zone $limit zone=my_zone:10m rate=1r/s;
}

**Rate limiting for the entire NGINX process:**
http {
    ... # your nginx.conf here
    limit_req zone=global_zone;
}
参考