我可以在 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