Apache mod_proxy 与 Tomcat 8.5 使用 http2

Apache mod_proxy 与 Tomcat 8.5 使用 http2

是否可以mod_proxy在 Apache Tomcat 8.5 前面使用 http2 协议?如果可以,最好能看一个示例配置。

编辑

具体来说:在客户端和服务器之间是否可以并且建议使用 http2(Apache httpd),以及继续ajp之间的数据流?Apache httpdApache Tomcat

编辑2

这个答案提供了有关该主题的一些详细信息:

https://stackoverflow.com/questions/35697681/can-we-use-apache-to-deliver-http-2-connection-for-a-java-application-server

答案1

Apache httpd 从 2.4.21 开始添加了 HTTP/2 代理支持,但建议您运行最新版本(撰写本文时为 2.4.27),因为该模块目前仍在发生很大变化。

Tomcat 刚刚在 Tomcat 9 中添加了 HTTP/2 支持:https://readlearncode.com/configure-tomcat-9-for-http2/

因此,从理论上讲,如果您愿意升级到这些版本(并安装 HTTP/2 所需的 OpenSSL 1.0.2 或更高版本),那么这一切都应该很好地结合在一起。

然而,在实践中,它仍然非常新,因此可能会出现错误。坦率地说,HTTP/2 的最大好处在于延迟更高的连接,例如客户端到服务器。服务器到服务器的连接,例如使用 mod_proxy 的 Apache 到 Tomcat,好处会更少。

因此,考虑到这些功能有多新,您可能希望在 Apache Web 服务器(或任何其他支持 HTTP/2 的 Web 服务器)上使用 HTTP/2,并使用 mod_proxy 通过 HTTP/1.1 或 AJP 连接到 Tomcat。这将为您带来 HTTP/2 的大部分性能提升,而无需升级所有内容以获得完整的端到端 HTTP/2 的麻烦和风险。

答案2

截至 2017 年 7 月,Apachemod_proxy不再支持 HTTP/2.0 协议。mod_proxy_http21模块但它仍处于实验阶段。

就像第二次编辑中提供的 StackOverflow 答案中详细说明的那样,您可以使用它mod_http2在 Apache 端启用 HTTP/2.0 支持,并使用 HTTP/1.1 或 AJP 与 Tomcat 服务器通信。但您会失去 HTTP/2.0 最大的功能之一:多路复用。

相关内容