Re: proxy http version 2; без SSL, для мультиплексирование запросов к бекенду

Валентин Бартенев vbart на nginx.com
Вт Май 24 14:49:21 UTC 2016


On Tuesday 24 May 2016 10:38:46 S.A.N wrote:
> > > Nginx никогда не посылает запрос в то же соединение, пока не
> > получит
> > > ответ
> > > и соединение освободиться.  Т.н. pipelining он не умеет и не
> > > использует.
> > > 
> > > Если бы следующий запрос пришел до того, как на первый был получен
> > > ответ,
> > > то он бы был отправлен на бекенд в другом соединении.
> > > 
> > > Т.е. никакой проблемы между nginx и бекендом нет.
> > 
> > Да, конечно Nginx не пошлет второй и третий запрос на бекенд, пока
> > первый не ответит, в этом и проблема, потому что он ждет ответа на
> > первый запрос, я бы ещё понял если бы Nginx не ждал ответа на первый
> > запрос и отправил второй и третий запрос в другом свободном конекте
> > или открыл новый конект, но Nginx эти запросы будет держать в очереди
> > и это очень плохо.
> > Могу выслать код теста.
> > 
> 
> Я ещё раз проверил, Nginx разносит три запроса из одного клиенского
> соеденения, по разным соединениям бекенда только если клиент сделал запросы
> по протоколу HTTP/2, если клиент сделает эти три запроса по протоколу
> HTTP/1.1, тогда Nginx никогда не разносит запросы из одного клиентского
> соединения по разным соединениям бекенда.
> 
[..]

Всё верно, потому что запросы в одном соединении по протоколу HTTP/1.1
обрабатываются последовательно.

Если вы хотите сделать три параллельных запроса в HTTP/1.1, то для этого
нужно отрыть 3 соединения и в каждом делать по запросу.

--
Валентин Бартенев


Подробная информация о списке рассылки nginx-ru