使用Nginx的验证URL信息

问题描述 投票:1回答:1

我们有API应用程序,该应用程序使用许多客户。每个客户都有API令牌,他在GET请求中传递了该令牌。

访问日志示例:

GET /api/token=FhrHd25Sk6REmwqn32Ssdf/bla?/bla/bla

我们想为令牌创建白名单,并使用nginx限制每个令牌的每秒连接数。

您能为执行此任务提供一些建议吗?

linux security nginx web server-administration
1个回答
0
投票

limit_req指令控制每秒各种键的最大连接数(在这种情况下,key是API令牌)。有关详细信息,请参见this document

您可以使用map指令提取API令牌。有关详细信息,请参见this document

例如:

map $request_uri $token {
    ~/token=freepass/           '';
    ~/token=(?<thetoken>[^/]+)/ $thetoken;
    default                     'everybody';
}

limit_req_zone $token zone=one:10m rate=1r/s;

server {
    ...
    limit_req zone=one;
    ...
}

在上面的示例中,令牌“ freepass”将具有无限访问权限,因为它没有为key定义值。使用命名捕获来提取令牌。 default子句将没有定义令牌的请求放入同一key,这可能是您想要的,也可能不是您想要的,因为这些请求将受到严格限制。

© www.soinside.com 2019 - 2024. All rights reserved.