我想限制每个用户在我的域名上的.flv和我的.mp4文件的下载速度。 我的页面每天有1000-3000个访问者,他们不能同时看我的东西,所以我有1-2个人的带宽。
我想给200KiB / s /用户…
如果有10个听众我的stream比他们使用2Mib / s,而不是30-40Mib / s …我想给他们一个最低限度..
我试过带宽模块,但它适用于域,而不是用户..
BandwidthModule On ForceBandWidthModule On LargeFileLimit .flv 1 204800 LargeFileLimit .mp4 1 204800
有没有简单的可安装的Apache模块? 还是我可以限制只下载光纤? …通过IP或连接下载速度限制…
它看起来像mod_cband可能是你最好的select。 CBandRemoteSpeed指令专门限制每个客户端IP的连接数,每秒连接数和连接速度。 它似乎没有“每个文件types”选项。 根据文档,它是按照<VirtualHost>设置的,所以如果你只想压缩.flv和.mp4文件,你需要将它们自己移动到一个虚拟主机(比如streaming.example.com ),并启用cband。
如果没有Apache内部解决scheme,而且我们在这里讨论Linux,那么可能会有一个select是通过stream量整形来实现。 所有你需要的是在Apache之外(快速)进行通信的可能性,即相应的进程属于某个用户。 也许你可以重写你的文件的URL,以便Apache调用一个PHP脚本。 该脚本将确定用户和进程ID,并在发送请求的数据之前写入一个小的“守护进程”(例如Python脚本)。 这个守护进程会在mangle表中添加一个带有–pid-owner(不再工作,见下文:编辑)的iptables规则并标记数据包(每个(活动)用户一个数字)。
您将为每个同时活动的用户定义一个HTB类。 tcfilter会根据iptables设置的nfmark来为每个包分配一个类。 你可以决定这些类别是否有200KiB / s作为硬性限制或者另外获得备用带宽。 这样用户打开多less个连接并不重要,限制是全局的。
“守护进程”会不时检查所有进程是否仍然存在,并删除已经存在的进程的规则。
编辑
看来,选项–pid-owner已经从iptables中删除。 根据用户或组进行过滤的可能性可能无济于事。 但是一个PHP脚本知道目的地址,这样它就可以用这些参数调用一个脚本来创build一个相应的规则。
正如DerfK已经提到的那样, mod_cband将会快速和肮脏地完成这项工作,但是对于更高的工作负载而言,这是CPU密集型的。
专业带宽限制背后的魔力就是将其作为一项独立的服务来提供。
如果你在一个colcolated托pipe环境,你可以从一个额外的1HE机器开始。