Возникла такая странная проблема: у меня виртуальный выделенный сервер с довольно ограниченными ресурсами. Иногда сайт начинает сильно тормозить. Смотрю в логи, а там кто-то с одного ip скачивает весь сайт.
Я научился банить таких черех .htaccess так:
Deny from 123.45.67.89
Deny from 123.46
Но хотелось бы настроить сервер так, чтобы он не отдавал все процессы одному ip. Это возможно?
Ответы
Не уверен, что вообще имеет смысл банить такие IP.
* Возможно этот IP выдаётся динамически. Тогда при следующем соединении на этом адресе будет сидеть добросовестный пользователь, который будет лишён возможности зайти на ваш сайт. А злоумышленник может попасть на соседний адрес.
* Некоторый провайдеры не предоставляют пользователям выделенного IP, давая один адрес на целое сообщество. Заблокировав такой IP вы теряете аудиторию целого города.
Конечно же, если у вас сайт для людей.
Ок, а как быть?
Если используется nginx, то можно ограничить количество одновременных подключений с одного ip-адреса. Для этого нужно отредактировать конфиг /usr/local/etc/nginx/nginx.conf , добавив в структуру limit_zone и limit_conn:
В приведенном примере разрешено не более 3 одновременных подключений с одного ip, на всё остальное отдается ошибка 503. Подробнее http://wiki.nginx.org/HttpLimitZoneModule
Когда конфиг отредактирован, можно проверить его, выполнив
nginx -c /usr/local/etc/nginx/nginx.conf -t
и затем перезапустить
/usr/local/etc/rc.d/nginx restart
лишь бы помогло !
Никак.
Отправить комментарий