我可以在 OpenShift 上启用 HTTP/2 吗?

Posted

技术标签:

【中文标题】我可以在 OpenShift 上启用 HTTP/2 吗?【英文标题】:Can I enable HTTP/2 on OpenShift? 【发布时间】:2016-04-20 06:40:17 【问题描述】:

我可以为托管在 OpenShift 上的网站启用 HTTP/2 吗?

我知道你可以使用 CloudFlare 作为代理,然后它将提供对 HTTP/2 的支持。但我感兴趣的是能够在 OpenShift 上精确配置我的应用程序。

【问题讨论】:

【参考方案1】:

不,你不能。

希望有一天这个答案会是错误的,并且有人会根据坎宁安定律纠正我。

【讨论】:

【参考方案2】:

有希望!

Openshift 3 本身有一个 HAProxy 的依赖项不支持 H/2,所以很遗憾几乎没有支持。希望部分支持 HTTP/2。你可以关注这个GitHub issue,看看他们是否会考虑换掉 HAProxy。

从提到的问题:

其实状态也不算太差。当公共路由使用直通 TLS 终止策略时,我们让 HTTP/2 正常工作。

所以:

pod 之间的 H2 工作(使用 TLS) pod 之间的 H2C 工作(带和不带 TLS 的 H2C) 公共路由后面的 H2 要求路由 TLS 终止是“直通”的 公共路由后面的 H2C 需要相同并且在服务器端启用 SSL

HAProxy 本身也承诺将 HTTP/2 作为其下一个版本的主要焦点(我们被嘲笑希望 H/2 支持 1.7 版,但它没有发生)。如果您想了解更多有关 HAProxy H/2 支持的信息,请参阅 SO answer 和 Discourse discussion。

【讨论】:

【参考方案3】:

从 OpenShift 3.11 开始,您可以使用环境变量 ROUTER_ENABLE_HTTP2 启用它,请参阅 https://docs.openshift.com/container-platform/3.11/release_notes/ocp_3_11_release_notes.html#ocp-311-haproxy-enhancements

实现 HAProxy 路由器 HTTP/2 支持(终止于路由器)。

$ oc set env dc/router ROUTER_ENABLE_HTTP2=true

【讨论】:

【参考方案4】:

HTTP/2 已在 OpenShift 4.5 上出现! https://docs.openshift.com/container-platform/4.5/networking/ingress-operator.html#nw-http2-haproxy_configuring-ingress

TL;DR 在整个集群上启用 HTTP/2:

$ oc annotate ingresses.config/cluster ingress.operator.openshift.io/default-enable-http2=true

【讨论】:

以上是关于我可以在 OpenShift 上启用 HTTP/2 吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Redhat-SSO 映像中为 OpenShift 启用相互 SSL 验证模式

OpenShift RedHat 上 CI 中的 ImageMagick 库无法正常工作

在没有弹性搜索的情况下在 openshift 上安装 fluentd?

如何在 JBoss AS 上使用 java RESTful Web 服务启用 CORS

如何在 Openshift 上运行(或者我应该运行)Composer?

如何在 OpenShift 上检测 WebSocket 连接的远程/客户端 IP 地址