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

Используйте HTTP / 2.0 между обратным прокси-сервером nginx и внутренним веб-сервером

Я использую nginx в качестве обратного ssl-прокси перед внутренним веб-сервером, который может выполнять HTTP / 2.0.

Я заметил, что nginx передает запросы к внутреннему серверу через HTTP / 1.1, а не через HTTP / 2.0. Можно ли указать nginx вместо этого использовать незашифрованное соединение HTTP / 2.0? Повысит ли это производительность?

Нашел это: https://trac.nginx.org/nginx/ticket/923

В обозримом будущем нет планов по внедрению поддержки HTTP / 2 в прокси-модуле.

Выдержка из письма, указанного в билете:

Практически нет смысла реализовывать его, так как основное преимущество HTTP / 2 заключается в том, что он позволяет мультиплексировать множество запросов в рамках одного соединения, таким образом [почти] снимая ограничение на количество одновременных запросов - и такого ограничения нет при разговоре с ваши собственные серверы. Более того, при использовании HTTP / 2 для бэкэндов ситуация может даже ухудшиться из-за использования одного TCP-соединения вместо нескольких.

К сожалению, nginx не поддерживает прокси для внутреннего сервера http / 2, на который ссылается https://www.nginx.com/blog/http2-module-nginx/#QandA

В: Будете ли вы поддерживать HTTP / 2 на восходящей стороне или только на стороне клиента?

О: На данный момент мы поддерживаем только HTTP / 2 на стороне клиента. Вы не можете настроить HTTP / 2 с помощью proxy_pass. [Редактор - В исходной версии этого сообщения это предложение было неправильно расшифровано как «Вы можете настроить HTTP / 2 с помощью proxy_pass». Приносим извинения за возможные неудобства.]

Но в чем смысл HTTP / 2 на стороне сервера? Потому что, как вы можете видеть из тестов, HTTP / 2 не дает больших преимуществ для сетей с низкой задержкой, таких как восходящие соединения.

Кроме того, в NGINX у вас есть модуль поддержки активности, и вы можете настроить кеш поддержки активности. Основное преимущество HTTP / 2 в производительности заключается в устранении дополнительных подтверждений связи, но если вы делаете это уже с кешем поддержки активности, вам не потребуется HTTP / 2 на стороне восходящего потока.

Начиная с версии 1.13.9 http2 поддерживается для отправки на сервер.

Один из способов - определить список активов, которые вы хотите вернуть по запросу в определенное место, используя http2_push заявление.

Второй способ - позволить nginx перехватить ответ и отправить теги ссылок с атрибутом предварительной загрузки с помощью http2_push_preload заявление.

Подробнее в Сообщение блога что @malix упоминается в комментариях OP