如何让nginx与express一起使用http2

5
我正在使用Node.js中的Express框架和Nginx作为反向代理。 我想知道如何利用Nginx的HTTP/2功能来提供静态内容,并将所有其他请求转发到Express API。
目前,我的Express服务器通过HTTP/1协议进行服务,而Nginx则接受HTTP/2连接并将其转发到Express。我该如何设置Nginx,以便它使用HTTP/2协议来提供我的静态文件夹中的所有内容,但将所有请求作为HTTP/1协议转发到API?
1个回答

3
我将把你的问题分成两部分:
  1. 如何利用http/2.0从nginx提供静态文件?
  2. 在nginx充当反向代理的情况下,如何设置nginx发送http/1.1请求到后端服务器?
回答 1:
对于提供静态文件的情况,主要的性能优势可以来自使用http/2.0协议的多路复用功能。多路复用增强了http/1.1中引入的pipelining功能,并解决了HOL blocking问题。使用多路复用,您可以使用相同的基础TCP连接并行加载多个资源,只需使用一个http连接即可。您还应该考虑流优先级,以为您想要在页面上首先加载的资源分配优先级,否则由于所有资源都将争夺同一多路复用连接,可能会延迟一些关键资源的加载。

答案2:

向后端服务器发送http/1.1请求是默认行为。因此,如果您已经配置了nginx使用http/2.0,则无需采取任何特殊措施来代理http/1.1请求到您的后端。这是因为nginx目前在代理模块中不支持http/2.0。请参考。此外,请查看这个Digital Ocean 教程,它将指导您在Ubuntu 16.04上设置已配置http/2.0的nginx。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接