Nginx的:我可以设置一个IP + URI的密钥limit_req_zone?

我试图设置Nginx的limit_req模块来限制任何IP可以对同一个URL做出的请求速率。

我想用一个由客户端的IP和请求URI的组合组成的关键字来定义limit_req_zone 。 那就是,而不是这个:

limit_req_zone $binary_remote_addr zone=req_dev:10m rate=2r/s;

像这样的东西:

 set $ip_url "$binary_remote_addr$request_uri" limit_req_zone $ip_url zone=req_dev:10m rate=2r/s; 

但是这不起作用,因为set不能在http上下文中调用:

 nginx: [emerg] "set" directive is not allowed here in /etc/nginx/nginx.conf:47 

有没有办法做到这一点?

只是要清楚:我不想限制一个特定的url的速度。 我想避免每秒两次以上的IP地址。

您可以在limit_req_zone键设置为任何你想要的。

 limit_req_zone "$binary_remote_addr$request_uri" zone=req_dev:10m rate=2r/s; 

请注意,这至less需要nginx 1.7.6。