【问题标题】:How to get nginx to take advantage of http2 with express如何让 nginx 使用 express 来利用 http2
【发布时间】:2017-03-26 17:22:38
【问题描述】:

我将 express 与 node 和 nginx 一起用作反向代理。我想知道如何利用 http/2 和 nginx 来提供静态内容,所有其他请求都被转发到 express API。

目前,我的 express 服务器正在通过 http/1 提供服务,而 nginx 正在接受 http/2 连接,并将它们转发给 express。如何设置 nginx 以便它使用 http/2 为我的静态文件夹中的所有内容提供服务,但将所有请求作为 http1 转发到 API?

【问题讨论】:

    标签: node.js express nginx


    【解决方案1】:

    我将把你的问题分成两部分:

    1. 如何利用 http/2.0 从 nginx 提供静态文件?
    2. 如果 nginx 充当反向代理,如何设置 nginx 向后端服务器发送 http/1.1 请求?

    答案 1:

    对于提供静态文件的情况,主要的性能优势可以来自使用 http/2.0 协议的多路复用功能。 多路复用增强了 http/1.1 中引入的pipelining 功能,并克服了HOL blocking 的问题。通过多路复用,您可以使用相同的底层 TCP 连接通过一个 http 连接并行加载多个资源。您还应该考虑使用stream prioritisation 为要在页面上首先加载的资源分配优先级,否则可能会延迟某些关键资源的加载,因为所有资源都将争夺相同的多路复用连接。

    答案 2:

    向后端服务器发送 http/1.1 请求是默认行为。因此,如果您已经将 nginx 配置为使用 http/2.0,那么您不必做任何特殊的事情来将 http/1.1 请求代理到您的后端。这是因为 nginx 目前不支持代理模块中的 http/2.0。请参阅此ticket。另外,请查看此数字海洋tutorial,它将指导您使用在 ubuntu 16.04 上配置的 http/2.0 设置 nginx。

    【讨论】:

      猜你喜欢
      • 2018-09-06
      • 2017-01-20
      • 2020-09-08
      • 2015-08-29
      • 2017-11-03
      • 1970-01-01
      • 2018-11-07
      • 2017-11-23
      • 2021-02-25
      相关资源
      最近更新 更多