Varnish 5.0 是否支持 HTTP/2 后端连接?

man*_*tor 2 nginx varnish

我有以下基础设施:

80  ->  Varnish -> Backend (NGINX, port 8080)
443 ->  NGINX (SSL-Termination with HTTP/2 enabled) -> Varnish -> Backend (NGINX, port 8080)
Run Code Online (Sandbox Code Playgroud)

我知道可以HTTP/2使用-p feature=+http2Varnish(端口 80)的参数为前端连接启用协议,但是后端连接呢?varnishlog -b向我展示了所有后端通信都是使用HTTP/1.0和执行的HTTP/1.1

如果有人能告诉我有关 Varnish 和 NGINX 的常见做法,我会非常高兴:

  • 是否可以启用HTTP/2后端连接?
  • 这样做对性能有什么意义吗?
  • 在性能方面保持-p feature=+http2443 -> NGINX (SSL-Termination with HTTP/2 enabled) -> Varnish通信启用参数对性能有意义吗?

关于后端通信(未加密):我知道这HTTP/2与 TLS 加密有关,但也许有一些我没有听说过的调整,所以这就是为什么我认为最好询问以确保 100% 确定。感谢您的理解。

Dan*_*nin 5

@Michael Hampton 的回答缺少一些要点,所以这里是:

Varnish一种在 Hitch+Varnish 组合中执行 HTTP/2 的软件,但大多数浏览器都需要 TLS 连接才能使 HTTP/2 工作。也就是说,HTTP/2 需要 TLS 连接,这是当今的基本要求。

Varnish Plus 确实支持 TLS,而 Varnish 开源不支持。

至于答案:

  • 不,不能为后端连接启用 HTTP/2
  • 没有任何意义,这样做就表现。HTTP/2 的主要好处是请求多路复用。除非 Varnish 能够解析 HTML,然后通过 HTTP/2 从后端并行请求所有资产,否则不需要/不可能。没有人想让 Varnish 成为浏览器 :) 因为它的样子很好
  • 不,在性能方面保持为 443 -> NGINX(启用 HTTP/2 的 SSL 终止)启用参数是没有意义的-p feature=+http2。因为 NGINX 根本不会与其后端 (Varnish) 对话 HTTP/2,类似于 Varnish 不会与其后端对话 HTTP/2(例如 NGINX+PHP-FPM),因为它没有意义(请参阅前一点)。

那说:

  • 保持-p feature=+http2Hitch + Varnish 组合确实有意义。
  • 如果NGINX 的流模块支持 ALPN 协议协商,那么保留-p feature=+http2NGINX(流)+ Varnish 组合也是有意义的。但事实并非如此。因此,它无法“正确终止 TLS 以让 HTTP/2 正常工作”。