限制每个用户的并发连接。 [所有用户的源IP相同]

时间:2013-09-11 09:10:59

标签: php web-services apache security qos

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

我正在寻找一种方法将每个用户的并发连接限制为5次。 apache和amp;都有一些模块可用。 nginx但这些模块基于源IP地址进行限制。因此,我无法使用apache和amp;模块。 nginx基于源IP限制并发连接,就像在我的情况下源IP一样。

有人可以建议我实现这个目标。

提前致谢, Keyur

1 个答案:

答案 0 :(得分:0)

这就是我设法解决这个问题的方法:

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

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

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

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

这整个组合运作良好,我能够限制坐在同一位置并共享相同IP地址的用户的并发请求。

谢谢,

Keyur