Как заставить HTTP / 2 работать в кластере Kubernetes, используя ingress-nginx - PullRequest
1 голос
/ 09 мая 2019

У нас есть ряд служб за шлюзом 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.

1 Ответ

1 голос
/ 09 мая 2019

Как @BarryPollard сказал, что вам не нужно конец HTTP / 2, чтобы установить соединения HTTP / 2 в вашем браузере.

Похоже, что все, что вы используете для клиента, переходит на HTTP / 1.1, попробуйте выполнить одно из следующих действий:

  • Chrome 51
  • Firefox 53
  • Edge 12
  • Internet Explorer 11
  • Opera 38

Вы не указали, какая архитектура выходит на nginx.Это напрямую связано с интернетом?или это происходит через облачный балансировщик нагрузки?CDN?Вы также можете протестировать Wireshark, как описано здесь .

...