0
我需要限制訪問我們的API到10個請求/秒。使用NGINX速率限制與標記
這是我根據他們的文檔使用區域:
limit_req_zone $ binary_remote_addr區= mylimit:10M速率= 10R/S;
此區域使用用戶IP地址作爲標識來評估使用限制。通常,人們使用相同的IP地址訪問我們的系統。
我想知道是否有可能使用用戶tokenId作爲速率限制的標識。我們的所有請求都包含URL中的tokenID
參數:www.example.com/api/events/?tokenID=*****
。
任何線索?
謝謝。
UPDATE
我試圖創建安全區: 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
確實含有確切令牌(測試在響應中添加頭部),但它似乎沒有更新由limit_req_zone
使用的值。
嘗試使用'$ arg_tokenID',而不是'$ token' –
@TarunLalwani我有幾個參數嘗試,它的作品完美,但與'tokenID'它不「T。難道是因爲它區分大小寫嗎? –
你的意思是'tokenID'也可以是'tokenid'嗎?或者令牌的實際值在應用程序中不敏感? –