【问题标题】:Reverse proxying HTTP/2 from h2 to h2c - Nginx solution反向代理 HTTP/2 从 h2 到 h2c - Nginx 解决方案
【发布时间】:2018-07-12 03:36:18
【问题描述】:

post 上的场景完全相同。但我需要一个 nginx 解决方案。我不是在介绍 haproxy 或任何其他服务。

【问题讨论】:

    标签: nginx http2


    【解决方案1】:

    Nginx 不支持 HTTP/2 中的后端连接,也无意引入此功能(有关更多详细信息,请参阅我对 this question 的回答)。

    因此,您唯一的选择是引入 haproxy 或其他一些 TCP 代理而不是 HTTP 代理、一些额外的服务或从 Nginx 切换到 Apache(它确实支持与 mod_proxy_http2 的 HTTP/2 后端连接)。

    为什么您觉得后端需要 HTTP/2?正如上面链接的相同答案中所详述的,HTTP/2 的大部分好处来自于在前端使用 HTTP/2。我认为将它放在后端的唯一真正原因是支持端到端 HTTP/2 服务器推送,但这对于多个 HTTP/2 连接来说确实很复杂,最好留给最后希望启动(参见here for discussion of this for Apache 也适用于其他 Web 服务器,如 nginx)。

    【讨论】:

    • 链接的答案是有争议的。我知道从前端到后端使用 HTTP/2 的系统会大大受益,出于同样的原因,从浏览器到前端使用 HTTP/2 也有很大的好处:多路复用、减少连接数、HTTP/2 推送、更好地利用 TCP 特性,减少资源使用等。遗憾的是 Nginx 不希望在后端支持 HTTP/2。
    • 我有兴趣了解更多。有任何详细信息的链接吗?推送是我现在看到的端到端连接的主要原因,但 1)Nginx 也不支持,2)可能还没有准备好进入主流(这里的优秀文章:jakearchibald.com/2017/h2-push-tougher-than-i-thought)。
    • NGINX 从 1.13.9 版本开始支持 HTTP/2 服务器推送。我正在尝试完成与 OP 相同的事情,但结果相同。反向代理在尝试 http 1.1 连接时会丢失,但侦听器正在等待 http2 客户端连接。答案是 http2-prior-knowledge,但我不确定如何通过反向代理发送。
    • 更新了答案,因为 Push 已被引入 nginx。但是 nginx 在后端不支持 HTTP/2 的要点保持不变。你目前不能用 nginx 做你想做的事,所以要么需要切换到支持它的东西,它也会在后端启用 HTTP/1.1。
    猜你喜欢
    • 2016-10-16
    • 2016-04-11
    • 1970-01-01
    • 2021-05-26
    • 2015-04-04
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多