
Я использую CentOS 6.4 и Plesk v11.5.30, хотя это не обязательно делать через Plesk.
Я хочу ограничить скорость соединения с определенным сайтом. Однако Plesk предоставляет мне только «Максимальное использование пропускной способности» и «ограничение подключений».
Максимальное использование полосы пропускания — это общая полоса пропускания, используемая доменом, а соединения — это количество соединений (очевидно). Я хочу ограничить скорость до 200 кбит/с независимо от того, сколько людей получают доступ к домену. Даже если только один человек получает доступ, я не хочу, чтобы он мог использовать всю полосу пропускания, я хочу, чтобы он был ограничен до 200 кбит/с
Есть ли способ ограничить все индивидуальные соединения всего 200 Кбит/с, чтобы никто не мог использовать скорость свыше 200 Кбит/с, но, конечно, если трафик высокий, они могут использовать скорость менее 200 Кбит/с?
Чтобы избежать специфичности для Plesk, вот что есть в моем conf, и я с радостью изменю его вручную, если есть какой-то другой параметр, который я могу использовать:
<IfModule mod_bw.c>
BandwidthModule On
ForceBandWidthModule On
Bandwidth all "0"
MaxConnection all "0"
BandWidthError 510
</IfModule>
решение1
Я никогда не использовал этот модуль, нодокументациякажется довольно прямолинейным.
Директивы действительны внутри <VirtualHost>
блока и будут применяться только к этому виртуальному хосту, если это так. Также похоже, что они не наследуются от более высоких частей конфигурации, поэтому вам следует поместить каждую соответствующую директиву в виртуальный хост.
Ваша текущая конфигурация устанавливает ограничение пропускной способности на "0", что означает отсутствие ограничений. Вы хотите 200 КБ (я предполагаю, что вы имели в виду килобайты, а не килобиты).
Вставьте это в виртуальный хост, который вы хотите ограничить:
BandwidthModule On
ForceBandWidthModule On
Bandwidth all 204800
Значение по умолчанию MinBandwidth
— 256 байт/с, так что вы сможете обработать 800 одновременных пользователей, прежде чем кто-либо из них начнет получать сообщения об ошибках. Если вы считаете, что 256 байт/с немного мало, вы также можете добавить , MinBandwidth all 1024
что будет означать, что когда у вас будет более 200 одновременных запросов, 201-й получит сообщение об ошибке вместо запрошенной страницы, а все 200 предыдущих получат гарантированную скорость не менее 1 КБ/с.
Обычно я не заморачиваюсь с этими <IfModule>
блоками, потому что они лишь скрывают ваши ошибки и заставляют вас думать, что mod_bw работает, хотя он даже не загрузился.
решение2
Я разобрался с этим с помощью LargeFileLimit:
<IfModule mod_bw.c>
BandwidthModule On
ForceBandWidthModule On
Bandwidth all "52428800"
MaxConnection all "400"
LargeFileLimit * 1024 204800
BandWidthError 510
</IfModule>
Это будет означать, что домен будет ограничен пропускной способностью 50 Мб (52428800), что он сможет иметь только 400 подключений одновременно и что любые файлы размером более 1 Мб будут ограничены 200 Кб/с (204800).
Для тех, кто будет читать это позже, вы также можете указать расширение вместо *, чтобы ограничиться только архивами zip, rars, avis и т. д.