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

Поддерживает ли Varnish 5.0 HTTP / 2 для внутренних соединений?

Имею следующую инфраструктуру:

80  ->  Varnish -> Backend (NGINX, port 8080)
443 ->  NGINX (SSL-Termination with HTTP/2 enabled) -> Varnish -> Backend (NGINX, port 8080)

Я знаю, что можно включить HTTP/2 протокол для внешних подключений с использованием -p feature=+http2 параметр для Varnish (порт 80), а как насчет бэкэнд-соединений? varnishlog -b показывает мне, что вся внутренняя коммуникация осуществляется с использованием HTTP/1.0 и HTTP/1.1.

Я был бы очень рад, если бы кто-нибудь мог сказать мне, какова общая практика в отношении Varnish и NGINX:

Что касается внутренней коммуникации (которая не зашифрована): я знаю, что HTTP/2 привязан к шифрованию TLS, но, возможно, есть какие-то настройки, о которых я не слышал, поэтому я думаю, что лучше спросить, чтобы быть уверенным на 100%. Спасибо за понимание.

В ответе @Michael Hampton отсутствуют некоторые моменты, поэтому вот оно:

Лак является единственное программное обеспечение, которое выполняет HTTP / 2 в комбинации Hitch + Varnish, но большинству браузеров требуется соединение TLS для работы HTTP / 2. То есть для HTTP / 2 требуется TLS-соединение, основное требование в настоящее время.

Varnish Plus поддерживает TLS, а Varnish с открытым исходным кодом - нет.

Что касается ответов:

  • Нет, включить HTTP / 2 для серверных подключений невозможно.
  • Оно делает не имеет смысл сделать это в отношении производительности. Основное преимущество HTTP / 2 - мультиплексирование запросов. Это не нужно / невозможно, если Varnish не смог проанализировать HTML, а затем запросить все ресурсы параллельно из бэкэнда через HTTP / 2. Никто не хочет делать Varnish браузером :), так как он есть
  • Нет не имеет смысл в отношении производительности, чтобы сохранить -p feature=+http2 параметр включен для 443 -> NGINX (SSL-Termination с включенным HTTP / 2). Поскольку NGINX просто не будет передавать HTTP / 2 своему бэкэнду (Varnish), аналогично тому, как Varnish не будет передавать HTTP / 2 своему бэкэнду (например, NGINX + PHP-FPM), потому что это не имеет смысла (см. предыдущий пункт).

При этом сказано:

  • Имеет смысл сохранить -p feature=+http2 в комбинации Hitch + Varnish.
  • Также имеет смысл сохранить -p feature=+http2 в NGINX (поток) + комбо Varnish ЕСЛИ Модуль потока NGINX поддерживает согласование протокола ALPN. Но это не так. Поэтому он не может правильно завершить TLS, чтобы HTTP / 2 работал.

Varnish вообще не поддерживает https. Этого никогда не было и не будет.

Так называемая поддержка внешнего интерфейса http2, которую Varnish предлагает в 5.0, на самом деле отсутствует в Varnish. Скорее, он использует другое программное обеспечение, называемое зацепкой, которое представляет собой прокси-сервер, который фактически завершает TLS с помощью HTTP / 2 и передает простые HTTP-соединения на свой бэкэнд, который является внешним интерфейсом Varnish.

Все серверы Varnish поддерживают только HTTP.

Итак, при использовании HTTP / 2 это на самом деле выглядит так:

Сцепка - лак - Nginx

Хотя в этом случае лак справится с заминкой.


Короче, нет, этого нельзя.