<div dir="ltr">Огромное спасибо за подсказку. После активации данной директивы всё стало работать так, как мне надо!<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">16 апреля 2013 г., 0:04 пользователь Maxim Dounin <span dir="ltr"><<a href="mailto:mdounin@mdounin.ru" target="_blank">mdounin@mdounin.ru</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello!<br>
<div><div class="h5"><br>
On Mon, Apr 15, 2013 at 11:56:12PM +0400, Виктор Вислобоков wrote:<br>
<br>
> Сегодня столкнулся со странной вещью<br>
> Стоит nginx 1.2.7<br>
> В нём сделаны ограничения по виртуалхостам с помощью limit_conn_zone и<br>
> limit_conn<br>
> Всё работало идеально до сегодняшнего вечера.<br>
> Случилась атака на сайт и смотрю в apache /server-status что куча коннектов<br>
> к тому виртуалхосту, к которому их быть не должно согласно limit_conn<br>
> больше 5.<br>
> Полез разбираться в логи.<br>
> В логах я вижу сработавшие limit_conn<br>
><br>
><br>
> 2013/04/16 01:52:21 [error] 11652#0: *248356 limiting connections by zone<br>
> "from_all_limit", client: 196.205.118.51, server: XXXXXX.net, request: "GET<br>
> / HTTP/1.1", host: "XXXXXX.net", referrer:<br>
> "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"<br>
><br>
> всё бы классно, но почему тогда столько коннектов висит на апачах?<br>
> Посмотрел ещё лог nginx, много 400-х<br>
> Тогда возникла мысль, а не происходит ли следующее:<br>
><br>
> 1. Клиент запрашивает у nginx страницу, но не дожидаясь её обрывает<br>
> соединение<br>
> 2. nginx передаёт запрос апачу и ждёт от него ответа, но поскольку клиент<br>
> соединение закрыл из limit_conn оно удаляется.<br>
> 3. вот и получается картина, что у апача есть куча запросов, которые он<br>
> обрабатывает, но которые уже не нужны ни nginx'У ни клиенту<br>
><br>
> Поскольку я не разбираюсь в тонкостях реализации, написал сюда. Я прав, так<br>
> всё и просиходит?<br>
<br>
</div></div>Да, так вполне может происходить.<br>
<br>
На всякий случай отмечу, что поведением nginx'а в подобной<br>
ситуации можно управлять с помощью директивы<br>
proxy_ignore_client_abort (<a href="http://nginx.org/r/proxy_ignore_client_abort" target="_blank">http://nginx.org/r/proxy_ignore_client_abort</a>),<br>
но для большинства задач поведение по умолчанию наиболее разумно.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Maxim Dounin<br>
<a href="http://nginx.org/en/donation.html" target="_blank">http://nginx.org/en/donation.html</a><br>
<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></font></span></blockquote></div><br></div>