第 5 章 为红帽 JBoss Web 服务器启用 HTTP/2


Hypertext 传输协议是通过互联网在应用程序(如服务器和浏览器)之间传输数据的标准方法。

通过提供如下增强功能,HTTP/1.1 上的 HTTP/2 进行了改进:

  • 标头压缩 - 通过省略隐式信息减少传输的标头的大小,以及
  • 单个连接中的多个请求和响应 - 使用二进制帧来分解响应消息,而不是文本帧。

将 HTTP/2 与 Red Hat JBoss Web 服务器一起使用:

  • 支持通过 TLS(h2)加密 的连接。
  • 不支持 通过 TCP(h2c)进行未加密的连接。

先决条件

  • root 用户访问(红帽企业 Linux 系统)
  • Red Hat JBoss Web Server 5.0 或更高版本
  • 以下操作系统原生库(由 jws-5.4.0-application-server-<platform> -<architecture>.zip (可用)提供)。

    需要运行 JSSE+OpenSSL 或 APR 的 RHEL-8 用户,您需要使用 Tomcat-Native 才能正常工作。Tomcat-Native 的 文件可以在原生归档目录中找到。要安装 OpenSSL 和 APR,请运行以下命令:

# yum install openssl
Copy to Clipboard Toggle word wrap
# yum install apr
Copy to Clipboard Toggle word wrap
  • 支持启用 SSL 的 HTTP/2 协议的连接器。对于 JBoss Web 服务器 5.4,具有 HTTP/2 协议支持的连接器有:

    • APR 原生连接器(APR)
    • NIO 与 JSSE + OpenSSL(JSSE)连接器.
    • NIO2 与 JSSE + OpenSSL(JSSE)连接器.

流程

为连接器启用 HTTP/2:

  1. 将 HTTP/2 升级协议(<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />)添加到服务器配置中 JWS_HOME/tomcat/conf/server.xml 中的连接器。

    例如:

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="/KeyStore.jks"
                         certificateKeystorePassword="changeit"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
    Copy to Clipboard Toggle word wrap

    server.xml 包含 APR 协议的连接器定义示例,并将升级协议升级到 HTTP/2:

    <Connector port="8443"
               protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150" SSLEnabled="true" >
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig>
            <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
                         certificateFile="conf/localhost-rsa-cert.pem"
                         certificateChainFile="conf/localhost-rsa-chain.pem"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
    Copy to Clipboard Toggle word wrap
  2. 以 root 用户身份重新启动红帽 JBoss Web 服务器,以应用更改后的配置。

    1. 对于 systemd(Red Hat Enterprise Linux 7)用户:

      # systemctl restart jws5-tomcat.service
      Copy to Clipboard Toggle word wrap
    2. 对于使用 start .sh 运行 Red Hat JBoss Web 服务器的 Red Hat Enterprise Linux 用户:

      # JWS_HOME/sbin/shudown.sh
      # JWS_HOME/sbin/startup.sh
      Copy to Clipboard Toggle word wrap
    3. 对于 Windows Server 用户:

      # net restart tomcat9
      Copy to Clipboard Toggle word wrap
重要

Red Hat Enterprise Linux 6 不再被支持,随后从文档中被删除。

后续步骤

通过查看 Red Hat JBoss Web Server 日志或使用 curl 命令验证 HTTP/2 是否启用了:

  • 检查控制台输出日志(JWS_HOME/tomcat/logs/catalina.out),以验证 "connector 已配置为支持协商到 [h2]:

    $ cat JWS_HOME/tomcat/logs/catalina.out | grep 'h2'
    
    06-Apr-2018 04:49:26.201 INFO [main] org.apache.coyote.http11.AbstractHttp11Protocol.configureUpgradeProtocol The ["https-openssl-apr-8443"] connector has been configured to support negotiation to [h2] via ALPN
    Copy to Clipboard Toggle word wrap
  • 或者使用 curl (针对支持 HTTP2curl 版本)进行验证:

    注意

    检查 curl 是否 支持 HTTP/2:

    $ curl -V
    
    curl 7.55.1 (x86_64-redhat-linux-gnu) ...
    Release-Date: 2017-08-14
    Protocols: dict file ftp ftps gopher http https ...
    Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy Metalink PSL
    Copy to Clipboard Toggle word wrap
    • 例如,当 HTTP/2 协议不活跃时:

      $ curl -I http://<JBoss_Web_Server>:8080/
      
      HTTP/1.1 200
      ...
      Copy to Clipboard Toggle word wrap
    • 但是,如果 HTTP/2 协议活跃,curl 会返回

      $ curl -I https://<JBoss_Web_Server>:8443/
      
      HTTP/2 200
      ...
      Copy to Clipboard Toggle word wrap

      其中 <JBoss_Web_Server> 是修改后连接器(如 example.com)的 URI,并且端口号取决于您的配置。

其它资源

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat