【发布时间】:2012-08-18 07:50:09
【问题描述】:
我有一个网络服务,用户通过 apache2 反向代理下载文件。
我将 mod rewrite 和 P 标志与 rewrite map 结合使用。
基本上是这样的:
<Location /my-identifier>
RewriteEngine on
RewriteRule /my-identifier/(.*) ${my-rewrite-map:$1} [P]
</Location>
我知道我可以使用 mod_bandwidth 或类似的东西限制一个连接的带宽,甚至每个服务器的一个 IP 地址。
但是我希望限制仅对某些用户生效(即那些产生大量流量并超出合理使用量的用户)。
我还希望它跨越多个服务器。
如果有帮助,我可以设置自定义环境变量(我可以完全控制可以将其编码到的 URL,并可以使用重写规则进行设置)!
基本上我想要的是,例如,对于达到极限的用户,无论他们使用多少个连接或连接到多少个服务器,他们都只能获得 5 mbps 的速度。
有可能吗?有模块吗?
我的想法是建立一个集中的数据存储,服务器会在其中报告每个 ip 的流量统计信息。可能是某种 RRD 数据结构。然后他们可以在指定的时间间隔(例如最后 60 秒)内选择 ip 的流量并根据它应用节流因子。
但我真的不想一个人做这一切,我可以,但需要几个月的时间......我也不受 apache 的约束。我也在用 Nginx 服务器做同样的事情,如果有 Nginx 的东西我可以切换到它!
【问题讨论】:
标签: apache nginx limit bandwidth throttling