我正在运行 nginx-proxy(jwilder)和 nginx-webserver(供应商 nginx 容器)的 docker 镜像。
nginx-proxy 位于 nginx-webserver 前面。
nginx-proxy 支持 http2,并且默认启用。我可以在 chrome dev tools 中看到我的所有内容都是通过 h2 协议下载的。
但是我的后端(nginx-vendor)配置为使用端口 80 和 http1.1。
现在我的问题有两个:
- 我了解 http2 对于浏览器/服务器通信的好处。但是在两个 nginx 服务器之间运行 http2 是否有相同的好处?
- 我如何测试第二个 nginx 是否使用 http2?
答案1
这取决于每次页面加载时从第二台服务器加载多少不同的资源。如果每次页面加载时同时加载多个资源,那么就有好处。
通过查看
access.log
第二个 nginx 服务器上的文件,并查看资源访问上指示的协议。
答案2
发现了这个:https://trac.nginx.org/nginx/ticket/923
在可预见的未来,没有计划在代理模块中实现 HTTP/2 支持
票证中引用的一封邮件摘录:
几乎没有任何意义去实现它,因为 HTTP/2 的主要优点是它允许在单个连接中多路复用多个请求,从而 [几乎] 消除了同时请求数量的限制 - 并且在与您自己的后端通信时没有这样的限制。此外,当使用 HTTP/2 连接后端时,情况甚至可能变得更糟,因为使用的是单个 TCP 连接而不是多个连接。