Re: Проблемы с бэкэндом на http2

Maxim Dounin mdounin на mdounin.ru
Пн Окт 19 12:50:59 UTC 2015


Hello!

On Sun, Oct 18, 2015 at 09:58:20PM +0300, Pavel Odintsov wrote:

> Всем привет!
> 
> Имеется сервер gRPC на С++, который работает только поверх
> шифрованного HTTP2. Имеется желание его проксировать силами Nginx для
> повышения надежности и реверс-проксирования.
> 
> Суть в том, что Nginx должен общаться с gRPC бэкэндом только по
> HTTP2/TLS, иначе оно не работает.
> 
> Но Nginx не может подключиться к http2 бэкэнду вот с такой ошибкой:
> 2015/10/18 20:54:07 [error] 2954#2954: *3 peer closed connection in
> SSL handshake while SSL handshaking to upstream, client: 127.0.0.1,
> server: api.fastnetmon.io, request: "POST
> /fastmitigation.Fastnetmon/GetBanlist HTTP/2.0", upstream:
> "https://127.0.0.1:10777/fastmitigation.Fastnetmon/GetBanlist", host:
> "api.fastnetmon.io:443"

[...]

Just for the record:

Разгадка в том, что поддержки HTTP/2 в proxy - нет и не 
планируется.

Основное преимущество SPDY и HTTP/2 перед HTTP - это больший 
параллелизм при меньших затратах на установление соединений (одно 
соединение, в нём много запросов одновременно). При работе с 
бекендом - с тем же успехом можно поддерживать нужное количество 
HTTP-соединений, разницы по latency - не будет, по throughput - 
обычный HTTP будет лучше, выигрыш HTTP/2 - только по ресурсам на 
уровне ядра (меньше сокетов).  И чтобы этот выигрыш получить - 
надо переписать работу с upstream'ами чуть менее, чем полностью, 
добавив поддержку мультиплексирования нескольких запросов в одном 
соединении.  Смысла тратить на это силы и время - очень мало.

-- 
Maxim Dounin
http://nginx.org/



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