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