ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
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


 




Copyright © Lexa Software, 1996-2009.