Как я могу ограничить использование полосы пропускания пользователя? - PullRequest
1 голос
/ 12 апреля 2010

Хорошо, у меня есть сайт, и он обслуживает все изображения и mp3-файлы через php-скрипт и может контролироваться и ограничиваться, но сейчас я беспокоюсь об общей пропускной способности моего сайта. Например, что если кто-то просто отправит миллион запросов на одну из моих страниц? У кого-нибудь есть какие-либо предложения в отношении методов сервера, используемых для предотвращения этого? Должен ли я использовать mod_cband ?

1 Ответ

2 голосов
/ 12 апреля 2010

Что мне лично нравится делать, так это управлять доступом через брандмауэр, а не через веб-сервер. Использование IPTABLES (только для Linux), чтобы предотвратить запуск отдельных IP-адресов более чем на указанное количество соединений. Это метод проб и ошибок, так как вам нужно правильно рассчитать его, но в целом это должно предотвратить скорость соединения злоумышленника

iptables -A INPUT -p TCP --dport 80 -m state --state NEW -j STOP-ABUSE
iptables -A STOP-ABUSE -m recent --set
iptables -A STOP-ABUSE -m recent --update --seconds 10 --hitcount 3 -j DROP

mod_cband также довольно хорош (хотя я перестал его использовать и оставил его только для брандмауэра, как описано выше), я считаю, что сочетание двух подходов приведет к удовлетворительным результатам.

Кроме того, я бы посоветовал вам взглянуть на mod_throttle и описать его по ссылке.

Надеюсь, это поможет вам

UPDATE: Как упоминалось в моем комментарии, брандмауэр и mod_throttle доступны только при наличии доступа к ним. Как вы упоминали, вы, похоже, находитесь в общей среде, поэтому у вас, скорее всего, не будет доступа к брандмауэру. Хотя кое-что можно сделать.

Вы можете включить mod_deflate (уточните у своего хоста, доступен ли он первым), а также избежать горячих ссылок (то есть других сайтов, использующих ваши ресурсы, такие как изображения и JS). Пример этого:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...