Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Обход ограничений limit conn
Hello!
On Sun, Jul 07, 2013 at 01:43:34PM -0400, Antohat wrote:
> Уважаемые разработчики!
>
> Мы используем на сайте ограничение на количество одновременных соединений с
> одного IP со следующим конфигом:
>
> limit_conn_zone $binary_remote_addr zone=addr:64m;
> limit_conn addr 20;
> limit_conn_log_level warn;
>
> Все работало отлично, но некоторое время назад мы с удивлением обнаружили,
> что бекенд обрабатывает более 500 запросов с одного IP.
> В результате анализа выяснилось, что какой-то смышленный малый создает
> большое количество соединений и сразу же их рвет. В результате nginx
> успевает передать запрос на бекенд, но т.к. пользователь сразу же рвет
> соединение и создает новые, то ограничение на количество запросов не
> срабатывает.
>
> Я понимаю, что с точки зрения nginx тут все чисто, т.к. он считает только
> открытые соединения со стороны клиента, но если подумать, то limit_conn все
> таки используется администраторами как средство ограничения кол-ва
> одновременных запросов на бекенд, т.к. большое кол-во запросов на к самому
> Nginx совсем не проблема.
>
> Не могли бы вы реализовать ограничение количества одновременных запросов с
> одного IP на бекенд, т.к. текущий функционал limit_conn тут не помогает?
С точки зрения nginx'а - никаких запросов уже нет вообще, т.к.
вслед за закрытием соединения клиентом - он закрывает соединение с
бекендом и полностью завершает обработку запроса.
Если у вас бекенд не достаточно умный, чтобы понять, что с
закрытым соединением уже ничего делать не нужно - то можно
включить proxy_ignore_client_abort:
http://nginx.org/r/proxy_ignore_client_abort
В этом случае nginx будет дожидаться, чтобы бекенд доработал, и
только после этого завершать обработку запроса (и соответственно
уменьшать счётчик активных соединений).
--
Maxim Dounin
http://nginx.org/en/donation.html
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|