我最近已经开始为我的一台服务器设置一些速率限制,并且在设置反向代理时如何仅通过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;
}
我希望它能正常工作,但是最终没有被定义。