我使用express和nginx作为反向代理。 我想知道如何利用Nginx的http / 2服务静态内容,所有其他请求被转发到快速API。
目前,我的快递服务器正在通过http / 1服务,而nginx正在接受http / 2连接,并将它们转发到快递。 如何设置nginx,以便它使用http / 2来提供我的静态文件夹中的所有内容,但将所有请求作为http1转发给API?
我会把你的问题分成两部分:
答案1:
对于提供静态文件的情况,主要的性能优势可以来自使用http / 2.0协议的多路复用功能。 复用增强了http / 1.1中引入的流水线特性,并克服了HOL阻塞的问题。 通过多路复用,您可以使用相同的底层TCP连接使用一个http连接并行加载多个资源。 您还应该考虑流优先级分配优先级给您想先载入页面的资源,否则一些关键资源的加载可能会延迟,因为所有的资源都将争用相同的多路复用连接。
答案2:
发送http / 1.1请求到后端服务器是默认行为。 所以,如果你已经配置nginx使用http / 2.0,你不需要做任何特殊的事情来代理http / 1.1请求到你的后端。 这是因为现在nginx在代理模块中不支持http / 2.0。 参考这张票 。 另外,请检查这个数字海洋教程 ,它将引导您使用在Ubuntu 16.04上配置的http / 2.0来设置nginx。