我想在wordpress网站上创建高级会员计划,例如金牌用户可以无限制地下载文件,但普通用户必须以最高200KB / s的速度下载文件。
当用户在wordpress中登录时保存cookie是很简单的(根据this使用setcookie()
功能),因此看来实现我目标的最好方法是基于cookie过滤用户。
我已经搜索并找到了mod_qos
的Apache模块,它可以限制带宽并具有一个Privileged Users选项,但是我不知道如何使用它来将高级用户排除在限制之外。提供的文档不够详细。
还有其他模块,例如mod_cband
和mod_ratelimit
等,但是它们都不可以基于cookie过滤用户(或者至少我不知道这样做的方法)
其他解决方法是基于IP筛选用户,并使用tc
和iptables
来限制带宽(就像对开放式VPN here所做的那样)。但是这似乎很困难,因为您必须为每次用户登录执行shell命令并将用户IP添加到高带宽组。
注意:我有两台单独的服务器,一台是装有cpanel的Web主机,我的wordpress网站运行在该服务器上,另一台是我的文件托管的vps。
不好意思,这是我在stackoverflow中的第一个问题。预先感谢。
答案 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