Tomcat 8.5 将成为 Spring Boot 1.4 中的默认设置,支持 HTTP/2 。
如何在 Spring Boot 应用程序中启用 HTTP/2 ?
原文由 yglodt 发布,翻译遵循 CC BY-SA 4.0 许可协议
Tomcat 8.5 将成为 Spring Boot 1.4 中的默认设置,支持 HTTP/2 。
如何在 Spring Boot 应用程序中启用 HTTP/2 ?
原文由 yglodt 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Spring Boot 2.1 及更高 版本中,只需将此属性添加到 .properties (或 .yml )文件中即可:
server.http2.enabled=true
您也可以像这样以编程方式执行此操作(在您的配置类之一中):
@Bean
public ConfigurableServletWebServerFactory tomcatCustomizer() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addConnectorCustomizers(connector -> connector.addUpgradeProtocol(new Http2Protocol()));
return factory;
}
原文由 Mahozad 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
3 回答2.3k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
使用 Spring Boot 应用程序启用
HTTP/2
的最优雅和最佳性能的方法如下。首先,正如 Andy Wilkinson 的回答中提到的,您需要在 Tomcat 级别启用 HTTP/2:
如果您没有使用嵌入式 Tomcat,您可以像这样设置 HTTP/2 监听:
请记住,您需要 Tomcat >= 8.5。
然后,您应该在 Tomcat 前面使用
HAProxy
(版本 >= 1.7) 来进行加密。客户端将通过 https 与 HAProxy 通信,而 HAProxy 将根据客户端的请求,通过明文 HTTP/1.1 或 HTTP/2 与后端通信。不会有不必要的协议翻译。
匹配的 HAProxy 配置在这里:
编辑 2019
使用“tcp”模式时我遇到两个问题
通常,由于 haproxy 代理较低级别的 tcp 连接,因此无法访问任何 http 内容