Я посмотрел на mod_bandwidth и mod_cban, но они, похоже, не удовлетворяют моим требованиям.
Я использую прокси-сервер с apache 2.2 (mod_proxy, proxy_http, proxy_connect).
Хочу ограничить "скорость закачки клиента".
Это в то же время пропускная способность загрузки сервера, которая не должна ограничиваться.
Я хочу для каждого соединения или даже лучше для IP.
Чтобы это было понятно: я не хочу, чтобы плохие люди загружали плохие данные в плохие места, используя мой прокси-сервер, чтобы «замаскировать» себя. Конечно, у меня есть журналы и все такое, но я хочу избавиться от неприятностей и сделать их в первую очередь непривлекательными.
Для лучшего понимания вот изображение моей установки:
Конечно, красная стрелка также может указывать на верхнюю левую стрелку.
В настоящее время я подумываю запустить apache два раза на одном сервере на разных портах и использовать ProxyRemote для отправки запроса на другой прокси. Так что на втором прокси я могу исключить localhost из троттлинга. Однако мне все еще нужно решение для ограничения входящей, но не исходящей полосы пропускания. Я мог понять это с помощью IPtables.
А если честно? Должен быть способ получше. Просто нужно.
iptables в сочетании с tc должны иметь возможность сделать это, если OP находится в Linux. В Iptables есть модуль connbytes, который может соответствовать количеству байтов, прошедших поток на данный момент. Используйте это, чтобы «пометить» пакеты в потоках, которые отправили слишком много байтов. Например, у вас может быть одно правило, которое помечает все пакеты в потоках от 1 до 10 МБ с помощью метки «1», а другое правило, которое отмечает все пакеты в потоках длиной более 10 МБ с помощью метки «2».
Затем вы устанавливаете классы формирования трафика по умолчанию (== менее 1 Мбайт), для отметки «1» и отметки «2».
Преимущество этого решения состоит в том, что вам не нужно наказывать пользователей, если они коллективно не потребляют слишком большую полосу пропускания. Недостатком является то, что это довольно сложные инструменты, которые требуют чтения сома, чтобы понять, что вам нужно.
iptables и tc включены в большинство дистрибутивов. Вы также можете взглянуть на tcng, который радикально упрощает формулирование наборов правил tc.
Ваш вопрос кажется интересным :). Ваш запрос кажется действительно возможным с пулами задержки apache + squid + squid + внешним acl squid (для фильтрации запросов на основе заголовков).
http://wiki.squid-cache.org/Features/DelayPools
http://www.squid-cache.org/Doc/config/external_acl_type/
Внешний тип acl - это ключ, который вы можете использовать для фильтрации запросов на основе заголовка (POST), чтобы применить ограничение скорости.