第 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
# yum install openssl
yum install apr
# yum install apr
支持启用 SSL 的 HTTP/2 协议的连接器。对于 JBoss Web 服务器 5.4,具有 HTTP/2 协议支持的连接器有:
- APR 原生连接器(APR)
- NIO 与 JSSE + OpenSSL(JSSE)连接器.
- NIO2 与 JSSE + OpenSSL(JSSE)连接器.
流程
为连接器启用 HTTP/2:
将 HTTP/2 升级协议(
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />)添加到服务器配置中JWS_HOME/tomcat/conf/server.xml中的连接器。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow server.xml包含 APR 协议的连接器定义示例,并将升级协议升级到 HTTP/2:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以 root 用户身份重新启动红帽 JBoss Web 服务器,以应用更改后的配置。
对于 systemd(Red Hat Enterprise Linux 7)用户:
systemctl restart jws5-tomcat.service
# systemctl restart jws5-tomcat.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于使用 start
.sh运行 Red Hat JBoss Web 服务器的 Red Hat Enterprise Linux 用户:JWS_HOME/sbin/shudown.sh JWS_HOME/sbin/startup.sh
# JWS_HOME/sbin/shudown.sh # JWS_HOME/sbin/startup.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Windows Server 用户:
net restart tomcat9
# net restart tomcat9Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
$ 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 ALPNCopy to Clipboard Copied! Toggle word wrap Toggle overflow 或者使用
curl(针对支持HTTP2的curl版本)进行验证:注意检查
curl 是否支持 HTTP/2:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,当 HTTP/2 协议不活跃时:
curl -I http://<JBoss_Web_Server>:8080/
$ curl -I http://<JBoss_Web_Server>:8080/ HTTP/1.1 200 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 但是,如果 HTTP/2 协议活跃,curl
会返回:curl -I https://<JBoss_Web_Server>:8443/
$ curl -I https://<JBoss_Web_Server>:8443/ HTTP/2 200 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中 <JBoss_Web_Server> 是修改后连接器(如
example.com)的 URI,并且端口号取决于您的配置。
其它资源
- 有关使用 HTTP/2 的更多信息,请参阅: Apache Tomcat 9 配置参考:HTTP 连接器 - HTTP/2 支持。
- 有关 HTTP/2 升级协议和支持的属性的详情,请参考: Apache Tomcat 9 配置参考:HTTP2 升级协议。
- 为 HTTP/2 建议的互联网标准 :RFC 7540 - Hypertext 传输协议版本 2(HTTP/2)