当我在一个外部的tomcat服务器上部署一个spring boot应用程序时,我需要在tomcat服务器上配置HTTP2
以及我的spring boot应用程序吗?当我通过浏览器或任何其他客户端(比如Postman
)调用部署在Tomcat
中的spring应用程序时,我对通信是如何发生的有点困惑。
我已经在Tomcat上启用了HTTP2
并进行了验证:
0:0:0:0:0:0:0:1 - - [08/Jan/2023:18:28:44 +0530] "GET / HTTP/2.0" 200 11408
0:0:0:0:0:0:0:1 - - [08/Jan/2023:18:28:44 +0530] "GET /tomcat.svg HTTP/2.0" 200 68761
0:0:0:0:0:0:0:1 - - [08/Jan/2023:18:28:44 +0530] "GET /tomcat.css HTTP/2.0" 200 5895
并且我已经使用本link中提到的步骤将我的Spring Boot应用程序配置为使用HTTP2
。
当我调用部署在外部Tomcat中的RestController
时,仍然得到HTTP 1.1
127.0.0.1 - - [08/Jan/2023:23:41:26 +0530] "HEAD /demo-0.0.1-SNAPSHOT/ HTTP/1.1" 200 -
127.0.0.1 - - [08/Jan/2023:23:41:51 +0530] "HEAD /demo-0.0.1-SNAPSHOT/getMessage HTTP/1.1" 200 -
其中demo-0.0.1-SNAPSHOT
是部署的工件。
我使用curl
进行了相同验证
HTTP/1.1 200
Content-Type: text/plain;charset=UTF-8
Content-Length: 41
Date: Sun, 08 Jan 2023 18:11:51 GMT
我错过了什么?
我的application.properties
文件看起来像:
# configuring SSL
server.port=8443
server.ssl.key-store-type=pkcs12
server.ssl.key-store=classpath:springboot.p12
server.ssl.key-store-password=password
server.ssl.key-alias=springboot
# enabling http2
server.http2.enabled=true
我已经使用以下命令正确地创建了Keystore
:
keytool -genkeypair -alias springboot -keyalg RSA -keysize 4096 -storetype PKCS12 -keystore springboot.p12 -validity 3650 -storepass password
1条答案
按热度按时间3htmauhk1#
Tomcat作为独立服务器,默认情况下在其
sever.xml
中禁用了http 2
的连接器。Sping Boot 2,最高支持Tomcat 9
如果这是作为war应用程序部署的
spring boot 2
,则最多可以使用Tomcat 9
。您必须在部署的服务器
conf
目录下找到http2的Tomcat 9(Server.xml)连接器,并取消注解此连接器,同时还要提供必要的证书文件。您需要取消注解
Sping Boot 3、Tomcat 10或更高版本
如果您将
spring boot 3
部署为war应用程序,则应该使用Tomcat 10
或更高版本。您必须在部署的服务器
conf
目录下找到http2的Tomcat 10(Server.xml)连接器并取消注解,同时提供必要的证书文件。