1

我的任务是托管一个 HTTP 应用程序(可能在 apache 或 nginx 上运行),并且该应用程序将被许多程序员用作 API。将有数百名程序员坐在同一个位置/场所/大厅,并且都共享相同的传出源 IP 地址以公开连接到我的 API。

我正在寻找一种方法来将每个用户的并发连接一次限制为 5 个。apache 和 nginx 中都有一些可用的模块,但这些模块会根据源 IP 地址进行限制。因此,我将无法使用 apache 和 nginx 的模块来限制基于源 IP 的并发连接,因为在我的情况下源 IP 保持不变。

有人可以建议我一种方法来实现这一点。

提前致谢, 凯尔

4

1 回答 1

0

好吧,这就是我设法处理的方式:

我的要求:限制坐在同一位置并共享同一 IP 的任何用户的并发请求。我必须确保一个用户不能影响另一个用户的工作。

我使用了 PHP + mod_qos(apache 的模块)的组合

  • 使用 PHP 和 Mysql:仅当用户在 URL 中具有特定令牌(奇怪的字符串)时才能使用 API。每个用户都被分配了一个特定的令牌,该令牌将在 url 参数中用于访问 API。收到请求后,首先在 mysql 数据库中检查请求以确保它具有特定的令牌。然后用户可以从 API 获取数据,否则用户被禁止访问。仅供参考..我知道最大受众,并且我为用户设置了一些预先确定的令牌,这些令牌通过 SMS 验证提供给他们。这确保了没有令牌的用户无法从 API 访问数据,并且请求 URI 必须具有该令牌。

  • mod_qos(apache 模块):现在为了限制并发请求,我使用了可用于 apache 的 mod_qos 模块。由于我已经有预先确定的令牌可供我使用,我使用了这个令牌并使用 mod_qos 制作了正则表达式规则,它将检查每个请求并根据它匹配的正则表达式限制对 5 个并发请求的访问。

整个组合运行良好,我能够限制来自同一位置并共享同一 IP 地址的用户的并发请求。

谢谢,

凯尔

于 2013-09-30T11:50:46.213 回答