У нас есть ряд служб за шлюзом API, который сам находится за ingress-nginx.Мы пытаемся использовать HTTP / 2 для ускорения передачи данных во внешний интерфейс, но все наши соединения все еще выполняются с HTTP / 1.1.
Соединение от клиента к nginx по HTTPS, ноnginx связывается с нашим API-шлюзом по протоколу HTTP, а шлюз также использует HTTP для взаимодействия с внутренними службами.
Нужно ли использовать HTTPS от начала до конца, чтобы заставить HTTP / 2 работать?Если это так, каков наилучший способ настроить это повторно с использованием сертификатов?Если нет, что может быть причиной сброса соединения на HTTP / 1.1?
Мы используем версию 0.21.0 ingress-nginx, которая имеет nginx 1.15.6 и OpenSSL 1.1.1, которых должно быть достаточно дляподдержка TLS 1.3 / ALPN / HTTP2.В нашем файле конфигурации конфигурации nginx use-http2
установлено значение true
, и я вижу, что в модуле /etc/nginx.conf
есть строка listen ... http2;
.
Редактировать 10/05/2019:
В дополнение к комментариям @Barry Pollard и @Rico я обнаружил, что AWS Elastic Load Balancer, который находится перед нашим контроллером ingress-nginx, не поддерживает HTTP / 2,Я вырезал nginx из стека, и нашему шлюзу API предоставляется собственный балансировщик сетевой нагрузки.Тем не менее, мы все еще на HTTP / 1.1.Похоже, HTTP-сервер ASP.Net Core 2.2 Kestrel по умолчанию использует HTTP / 2, поэтому я не уверен, почему соединение все еще падает до 1.1.