在Nginx反向代理和后端Web服务器之间使用HTTP / 2.0


19

我将nginx用作能够执行HTTP / 2.0的后端Web服务器之前的reverse-ssl-proxy。

我注意到nginx通过HTTP / 1.1而不是HTTP / 2.0将请求代理到后端服务器。是否可以告诉Nginx使用未加密的HTTP / 2.0连接?这会提高性能吗?


尽管http2规范说它不需要加密,但是nginx当前不支持没有ssl的http2。
Marco Marco

因此,如果我指定了https://地址,它将使用HTTP / 2.0?好吧,那我猜我最好使用HTTP / 1.1。两次加密通信没有意义,使用ssl的HTTP / 2.0的性能可能不如没有ssl的HTTP / 1.1那样,对吗?我的意思是,这种方法使反向SSL代理无效;)
S1lentSt0rm

如果前端服务器和后端服务器之间的流量在同一台计算机上,则对它们进行加密并不重要。至于性能:即使使用加密,http2 ist也比http1.1快很多。不能不说是否会有所作为就不能说。
Marco Marco

Answers:


21

找到了这个:https : //trac.nginx.org/nginx/ticket/923

在可预见的将来,没有计划在代理模块中实现HTTP / 2支持

票证中引用的邮件摘录:

几乎没有任何实现的意义,因为HTTP / 2的主要好处是它允许在单个连接中多路传输多个请求,因此[几乎]消除了单请求数量的限制-与之通信时没有这种限制。您自己的后端。此外,由于使用单个TCP连接而不是多个TCP连接,因此使用HTTP / 2后端时情况甚至可能变得更糟。


9
看起来这意味着如果要使用nginx代理,则不能使用HTTP / 2 Server Push,即使后端服务器在直接访问它的情况下也会支持它。
thomasrutter

3
我通过慢速连接对非本地站点使用nginx反向代理,因此HTTP / 2将对我有所帮助。
令人遗憾

5

可悲的是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。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.