Как ограничить пропускную способность загрузки файлов на основе файлов cookie - PullRequest
0 голосов
/ 12 апреля 2019

Я хочу создать премиальные планы членства на моем WordPress-сайте таким образом, чтобы, например, пользователи уровня Gold могли загружать файлы без каких-либо ограничений, но обычные пользователи должны загружать файлы со скоростью не более 200 КБ / с.

Просто сохранить cookie, когда пользователь входит в WordPress (используя функцию setcookie() в соответствии с this ), так что, похоже, лучший способ достичь моей цели - фильтровать пользователей по cookie.

Я искал и нашел mod_qos модуль apache, он может ограничивать пропускную способность и имеет опцию Привилегированные пользователи , но я не знаю, как его использовать, чтобы исключить премиум-пользователей из ограничений. Предоставленные документы недостаточно подробны.

Существуют и другие модули, такие как mod_cband и mod_ratelimit и другие, но ни один из них не может фильтровать пользователей по cookie (или, по крайней мере, я не смог найти способ сделать это)

Другим обходным решением является фильтрация пользователей по IP и использование tc и iptables для ограничения пропускной способности (как это сделано для open vpn здесь ). Но это кажется трудным, потому что вы должны выполнять команды оболочки для каждого логина пользователя и добавлять IP пользователя в группу с высокой пропускной способностью.

Примечание. У меня есть два отдельных сервера: один - веб-хост с cpanel, на котором работает мой сайт WordPress, а другой - VPS, на котором я размещаю свои файлы.

Извините за плохой английский или дикцию, это мой первый вопрос в stackoverflow. Заранее спасибо.

1 Ответ

0 голосов
/ 14 апреля 2019

После дополнительных исследований я сам нашел решение:

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

Первая строка проверяет, существует ли файл cookie с именем «foo» со значением «bar», если так, то переключается переменная среды «IsVIP».Во второй строке применяется ограничение скорости загрузки, если для «IsVIP» не установлено значение «истина».

источники:

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 /

...