Nginx 速率限制 GET 或 POST 请求仅在一个位置
Nginx Rate limit GET or POST requests only at a location
我在 nginx 中配置了一个服务器,并使用以下代码创建我的速率限制区域:
limit_req_zone $key zone=six_zone:10m rate=60r/m;
在我所在的位置,我使用一个模块来处理请求。此位置支持 GET、POST 和 DELETE 方法。我正在尝试仅对对该位置的 GET 请求进行速率限制。这就是我认为可能有效但实际上无效的方法。
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;
}
我在 nginx 中配置了一个服务器,并使用以下代码创建我的速率限制区域:
limit_req_zone $key zone=six_zone:10m rate=60r/m;
在我所在的位置,我使用一个模块来处理请求。此位置支持 GET、POST 和 DELETE 方法。我正在尝试仅对对该位置的 GET 请求进行速率限制。这就是我认为可能有效但实际上无效的方法。
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;
}