Mau*_*ano 3 api nginx rate-limiting
我需要将对 API 的访问限制为每秒 10 个请求。
这是我根据他们的文档使用的区域:
limit_req_zone $binary_remote_addr zone=mylimit:10m 速率=10r/s;
该区域以用户IP地址为标识,对使用限制进行评级。人们通常使用相同的 IP 地址来访问我们的系统。
我想知道是否可以使用用户 tokenId 作为速率限制的标识。我们所有的请求都tokenID在 URL 中包含一个参数:www.example.com/api/events/?tokenID=*****。
有什么线索吗?
谢谢。
更新
我尝试创建区域:
limit_req_zone "$tokenid" zone=limit:10m rate=1r/s;(1 r/s 用于测试)并提取变量,$tokenid如下所示:
limit_req_zone "$tokenid" zone=limit:10m rate=1r/s;
server {
...
location ~ \.php {
...
if ($args ~* "tokenID=([^&]+)") {
set $tokenid "$1";
}
...
}
}
Run Code Online (Sandbox Code Playgroud)
该变量$tokenid确实包含确切的令牌(已测试向响应添加标头),但它似乎没有更新limit_req_zone.
@TarunLalwani 提出的建议确实有效。
我应该使用$arg_tokenID而不是从 URI 中提取它并将其设置到变量中。
最终的配置文件如下所示:
limit_req_zone "$arg_tokenID" zone=limit:10m rate=10r/s;
server {
...
limit_req zone=limit burst=10;
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4689 次 |
| 最近记录: |