我将nginx用作能够执行HTTP / 2.0的后端Web服务器之前的reverse-ssl-proxy。
我注意到nginx通过HTTP / 1.1而不是HTTP / 2.0将请求代理到后端服务器。是否可以告诉Nginx使用未加密的HTTP / 2.0连接?这会提高性能吗?
我将nginx用作能够执行HTTP / 2.0的后端Web服务器之前的reverse-ssl-proxy。
我注意到nginx通过HTTP / 1.1而不是HTTP / 2.0将请求代理到后端服务器。是否可以告诉Nginx使用未加密的HTTP / 2.0连接?这会提高性能吗?
Answers:
找到了这个:https : //trac.nginx.org/nginx/ticket/923
在可预见的将来,没有计划在代理模块中实现HTTP / 2支持
票证中引用的邮件摘录:
几乎没有任何实现的意义,因为HTTP / 2的主要好处是它允许在单个连接中多路传输多个请求,因此[几乎]消除了单请求数量的限制-与之通信时没有这种限制。您自己的后端。此外,由于使用单个TCP连接而不是多个TCP连接,因此使用HTTP / 2后端时情况甚至可能变得更糟。
可悲的是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在后端方面的意义是什么?因为从基准测试中可以看出,HTTP / 2对于低延迟网络(例如上游连接)的好处并不多。
另外,在NGINX中,您具有keepalive模块,并且可以配置keepalive缓存。HTTP / 2的主要性能优势是消除了额外的握手,但是如果您已经使用keepalive缓存进行了握手,则上游不需要HTTP / 2。