我有一个网络服务,用户通过 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 的东西我可以切换到它!