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. Подробнее об этом рассказано тут: 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