<div dir="ltr"><div><div><div><div><div><div>(сорян за топпостинг)<br><br></div>давно была мысль.<br></div>настройки кипэлайвов, насколько, я понимаю, будут работать в любой комбинации, даже в таких<br><br></div>1) в апстриме НЕ указан keepalive, в правилах проксирования указан<br></div>2) в апстриме указан keepalive, в правилах проксирования протокол 1.0<br><br></div>как писал Максим, это будет приводить к невидимому на первый взгляд неоптимальному использованию ресурсов сервера.<br><br></div>можно как-то на уровне проверки синтаксиса ставить emerg для таких разбалансировок ?<br></div><div class="gmail_extra"><br><div class="gmail_quote">28 ноября 2017 г., 18:42 пользователь 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>
<span class=""><br>
On Tue, Nov 28, 2017 at 12:46:53PM +0500, Илья Шипицин wrote:<br>
<br>
> Привет!<br>
><br>
> в официальной документации <a href="https://nginx.ru/ru/docs/http/websocket.html" rel="noreferrer" target="_blank">https://nginx.ru/ru/docs/http/<wbr>websocket.html</a><br>
><br>
> есть пример<br>
><br>
>     map $http_upgrade $connection_upgrade {<br>
>         default upgrade;<br>
>         ''      close;<br>
>     }<br>
><br>
><br>
> получается, что соединение будет закрываться каждый раз.<br>
><br>
> не будет ли логичнее сделать<br>
><br>
>     map $http_upgrade $connection_upgrade {<br>
>         default upgrade;<br>
>         ''      '';<br>
>     }<br>
><br>
> ?<br>
><br>
> или это какая-то задумка ? расскажите ?<br>
<br>
</span>По умолчанию соединения к бэкенду используют HTTP/1.0 и<br>
закрываются каждый раз.  Если хочется, чтобы они не закрывались,<br>
нужно явно сказать nginx'у, чтобы использовал HTTP/1.1 и не<br>
отправлял на бэкенд "Connection: close", а также включить кэш<br>
keepalive-соединений в блоке upstream.  Подробнее об этом<br>
рассказано тут:<br>
<br>
<a href="http://nginx.org/ru/docs/http/ngx_http_upstream_module.html#keepalive" rel="noreferrer" target="_blank">http://nginx.org/ru/docs/http/<wbr>ngx_http_upstream_module.html#<wbr>keepalive</a><br>
<br>
Если хочется использовать keepalive к бэкендам одновременно с<br>
проксированием вебсокетов - то пример в статье про проксирование<br>
вебсокетов, естественно, не будет работать как есть, в нём надо<br>
"close" заменить на пустую строку - как и предложено выше.<br>
<br>
Однако если это сделать без включения кэша keepalive-соединений,<br>
то никаких положительных последствий не будет.  Наоборот, появится<br>
лишняя задержка перед закрытием соединения, и закрывать соединения<br>
будет nginx, а не бэкенд, что в свою очередь может привести к<br>
проблемам, так как time-wait сокеты вместо стороны бэкенда<br>
окажутся на стороне nginx'а.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Maxim Dounin<br>
<a href="http://mdounin.ru/" rel="noreferrer" target="_blank">http://mdounin.ru/</a><br>
______________________________<wbr>_________________<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" rel="noreferrer" target="_blank">http://mailman.nginx.org/<wbr>mailman/listinfo/nginx-ru</a></font></span></blockquote></div><br></div>