我试图设置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。