gpt4 book ai didi

api - 对 token 使用 NGINX 速率限制

转载 作者:行者123 更新时间:2023-12-02 00:41:16 25 4
gpt4 key购买 nike

我需要将对我们 API 的访问限制为每秒 10 个请求。

这是我根据他们的文档使用的区域:

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

该区域使用用户IP地址作为标识来评估使用限制。通常,人们使用相同的 IP 地址访问我们的系统。

我想知道是否可以使用用户 tokenId 作为速率限制的标识。我们所有的请求都在 URL 中包含一个 tokenID 参数: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";
}
...
}
}

变量 $tokenid 确实包含确切的 token (测试添加一个 header 到响应),但它似乎没有更新 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;
...
}

关于api - 对 token 使用 NGINX 速率限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46595754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com