Hello! On Tue, Nov 28, 2017 at 07:04:05PM +0500, Илья Шипицин wrote:
> 28 ноября 2017 г., 18:42 пользователь Maxim Dounin <mdou...@mdounin.ru> > написал: > > > Hello! > > > > On Tue, Nov 28, 2017 at 12:46:53PM +0500, Илья Шипицин wrote: > > > > > Привет! > > > > > > в официальной документации https://nginx.ru/ru/docs/http/websocket.html > > > > > > есть пример > > > > > > map $http_upgrade $connection_upgrade { > > > default upgrade; > > > '' close; > > > } > > > > > > > > > получается, что соединение будет закрываться каждый раз. > > > > > > не будет ли логичнее сделать > > > > > > map $http_upgrade $connection_upgrade { > > > default upgrade; > > > '' ''; > > > } > > > > > > ? > > > > > > или это какая-то задумка ? расскажите ? > > > > По умолчанию соединения к бэкенду используют HTTP/1.0 и > > закрываются каждый раз. Если хочется, чтобы они не закрывались, > > нужно явно сказать nginx'у, чтобы использовал HTTP/1.1 и не > > отправлял на бэкенд "Connection: close", а также включить кэш > > keepalive-соединений в блоке upstream. Подробнее об этом > > рассказано тут: > > собственно, в примере про вебсокеты у вас: > > proxy_http_version 1.1; И этого, очевидно, недостаточно. > > http://nginx.org/ru/docs/http/ngx_http_upstream_module.html#keepalive > > > > Если хочется использовать keepalive к бэкендам одновременно с > > проксированием вебсокетов - то пример в статье про проксирование > > вебсокетов, естественно, не будет работать как есть, в нём надо > > "close" заменить на пустую строку - как и предложено выше. > > > > Однако если это сделать без включения кэша keepalive-соединений, > > то никаких положительных последствий не будет. Наоборот, появится > > лишняя задержка перед закрытием соединения, и закрывать соединения > > будет nginx, а не бэкенд, что в свою очередь может привести к > > проблемам, так как time-wait сокеты вместо стороны бэкенда > > окажутся на стороне nginx'а. > > > > это понятно. как минимум, стоит это обговорить, в текущем виде пример > неочевидный. > подозреваю, что его копипастят и драг-н-дропят по принципу "ну это же > официальная документация, там фигню не посоветуют" В текущем виде пример совместим с поведением по умолчанию. А обговаривать все варианты совмещения всех примеров из документации - это, извините, комбинаторный взрыв получится, мы такого, боюсь, не потянем. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru