15.9. 了解 undertow 中的 HTTP/2


Undertow 允许使用 HTTP/2 标准,通过同一 TCP 连接压缩标头和多个流来减少延迟。它还为服务器提供在请求资源前将资源推送到客户端的功能,从而加快页面负载。

请注意,HTTP/2 仅适用于也支持 HTTP/2 标准的客户端和服务器。

重要

大多数现代浏览器通过安全 TLS 连接(称为 h2)强制使用 HTTP/2,并且可能不支持通过普通 HTTP (称为 h2 c)的 HTTP/2。仍可将 JBoss EAP 配置为使用 HTTP/2 和 h2c,而无需使用 HTTPS,并且仅使用 HTTP 升级为普通 HTTP。在这种情况下,您可以在 HTTP 监听器中启用 HTTP/2 :

/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=enable-http2,value=true)
Copy to Clipboard Toggle word wrap

15.9.1. 在 Undertow 中配置 HTTP/2

此流程解释了如何通过配置 HTTPS 侦听器在 Undertow 中启用 HTTP/2。

先决条件

  • 您可以访问管理 CLI。
  • 有修改服务器配置的权限。

流程

  1. 在 HTTPS 监听器上启用 HTTP/2:

       ----
       /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=enable-http2,value=true)
       ----
    Copy to Clipboard Toggle word wrap
  2. 重新载入服务器以应用更改:

       ----
       reload
       ----
    Copy to Clipboard Toggle word wrap
注意

要将 HTTP/2 与 elytron 子系统搭配使用,您需要确保 Undertow 的 https-listener 中配置的 ssl-context 配置为 modifiable。这可以通过将适当 server-ssl-contextwrap 属性设置为 false 来实现。默认情况下,wrap 属性设为 false。Undertow 在关于 ALPN 的 ssl-context 中进行修改时需要这样做。如果提供的 ssl-context 不可写入,则无法使用 ALPN,且连接会返回 HTTP/1.1。

15.9.2. 使用 HTTP/2 时支持 ALPN

当通过安全 TLS 连接使用 HTTP/2 时,需要一个支持 Application-Layer Protocol Negotiation (ALPN) TLS 协议扩展的 TLS 堆栈。获取此堆栈因已安装的 JDK 而异。

  • 从 Java 9 开始,JDK 支持 ALPN 原生;但是,使用 OpenSSL 供应商中的 ALPN TLS 协议扩展支持时,在使用 Java 9 或更高版本时,也应该提高性能。

有关安装 OpenSSL 以获取 ALPN TLS 协议扩展支持的说明,请参考从 JBoss Core Services 安装 OpenSSL。Red Hat Enterprise Linux 8 支持标准系统 OpenSSL,且不需要额外的 OpenSSL。

安装 OpenSSL 后,请按照 xref:"configure-jboss-eap-to-use-openssl_configuring-the-web-server-undertow-in-jboss-eap"[Configure JBoss EAP 使用 OpenSSL] 中的说明进行操作。

15.9.3. 验证 HTTP/2 使用情况

要验证 Undertow 是否使用 HTTP/2,您需要检查来自 Undertow 的标头。使用 https 导航到您的 JBoss EAP 实例,如 https://localhost:8443,并使用浏览器的开发人员工具检查标头。有些浏览器(如 Google Chrome)将在使用 HTTP/2 时显示 HTTP/2 伪标头,如 :path:authority:method:scheme。其他浏览器(如 Firefox 和 Safari)将报告标题的状态或版本为 HTTP/2.0

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat