Назад | Перейти на главную страницу

Проблемы с прокси-запросами к нескольким бэкэндам с http2, «объединение соединений», повторное использование соединений в google chrome

Мы ищем способ использовать http2, один прокси с завершением SSL и несколько разных бэкэндов для разных поддоменов.

я нашел это объяснение проблемы и я ищу решения, которые подойдут для haproxy. Что, вероятно, подойдет и для других прокси.

The problem you ran into is caused by "Connection coalescing".
For example, if a browser (Chrome/Firefox) connects to an http2 server "a.example.org" which resolves to 192.168.2.1 and later connects to "b.example.org", it checks 2 things:

1. Do DNS entries match? This will always be the case since our proxy only has one IP.
2. Has a.example.org provided a certificate that also matches b.example.org. (e.g. wildcard or multidomain cert).

If both are the case it will not initiate a second connection but instead reuse the existing connection to host a.example.org.
This is fine in theory but due to the use of sniproxy a.example.org is unable to handle b.example.org because they are in reality, two different hosts.
One way the solve this should be the use of different certs that only cover a single domain (e.g. no wildcard).
I have not tested it but I think it might work.

Есть ли способ заставить наш прокси-сервер haproxy проверять существующие соединения и подтверждать, что этот домен, поддомен верны для бэкэнда, на который фактически отправляется соединение.

Мы попытались изменить значения тайм-аута, используя силу

option http-server-close
option forceclose  

Ничего не работает так, как хотелось бы. Подключение к subA.domain.com, а затем подключение к subB.domain.com не удается, поскольку они настроены на двух разных серверных ВМ. Браузер восстанавливает одно и то же соединение для двух разных серверных модулей.

Не ответ, просто обходной путь. Необходимо отключить HTTP2 на веб-сервере. Потом все снова работает. Иногда новый стандарт просто ломает старые вещи.