如何基于Cookie限制文件下载带宽

时间:2019-04-12 17:10:50

标签: apache cookies apache-modules trafficshaping

我想在wordpress网站上创建高级会员计划,例如金牌用户可以无限制地下载文件,但普通用户必须以最高200KB / s的速度下载文件。

当用户在wordpress中登录时保存cookie是很简单的(根据this使用setcookie()功能),因此看来实现我目标的最好方法是基于cookie过滤用户。

我已经搜索并找到了mod_qos的Apache模块,它可以限制带宽并具有一个Privileged Users选项,但是我不知道如何使用它来将高级用户排除在限制之外。提供的文档不够详细。

还有其他模块,例如mod_cbandmod_ratelimit等,但是它们都不可以基于cookie过滤用户(或者至少我不知道这样做的方法)

其他解决方法是基于IP筛选用户,并使用tciptables来限制带宽(就像对开放式VPN here所做的那样)。但是这似乎很困难,因为您必须为每次用户登录执行shell命令并将用户IP添加到高带宽组。

注意:我有两台单独的服务器,一台是装有cpanel的Web主机,我的wordpress网站运行在该服务器上,另一台是我的文件托管的vps。

不好意思,这是我在stackoverflow中的第一个问题。预先感谢。

1 个答案:

答案 0 :(得分:0)

经过更多研究,我自己找到了解决方案:

<IfModule mod_qos.c>
SetEnvIf        Cookie  "foo=bar"    IsVIP
QS_EventKBytesPerSecLimit !IsVIP 200
</IfModule>

第一行检查是否存在名为“ foo”且值为“ bar”的cookie,如果存在则切换环境变量“ IsVIP”。 如果“ IsVIP”未设置为true,则第二行应用下载速度限制。

来源:

https://sourceforge.net/p/mod-qos/discussion/697421/thread/82a85ab2

https://serverfault.com/questions/541458/how-do-you-use-apache-setenvif-with-cookie-values

http://mod-qos.sourceforge.net/