Spring WebFlux+Netty 中怎么配置 HTTP/2?

2021-01-03 12:35:15 +08:00
 u6b7b5fc3

环境 JDK11+SpringBoot2.4.1+Spring WebFlux+默认 Netty 服务器,看了一下官方文档说是不同服务器配置不一样:

里面的链接有关于 Netty 的配置:

但是不知道怎么集成到 SpringBoot 中:

另一方面证书是阿里云买的,没有提供 Netty 直接相关的证书:

额外搜索了一下好像没有现成的 Demo (准确来说 Github 上有,但是有的用的是 Undertow,有的用的是 OpenSSL 生成的证书),以前使用 Spring MVC+Tomcat 的时候可以直接下载证书并在配置文件中配置:

server:
  http2:
    enabled: true
  ssl:
    key-store: xxxx
    key-store-type: xxxx
    key-store-password: xxxx

就可以使用了,但是 Netty 的好像不可以。

所以现在的问题是到底怎么配置才能集成 HTTP/2 ?

1977 次点击
所在节点    Java
8 条回复
hantsy
2021-01-03 13:16:23 +08:00
Java 项目应该 JKS 都是可以的。
hantsy
2021-01-03 13:23:16 +08:00
证书这东西跟服务器有什么关系?

Java 最常见的就是用 JDK 自带的的 Keytool 生成。

默认 keytool 生成生成的证书,在浏览器中会被挡住。但 keytool 可以合并第三方权威证书,比如 CA,Let‘sEncrpt 就可以解决浏览器的问题了。
hantsy
2021-01-03 13:29:21 +08:00
Servlet 4 标准默认启用 Http 2,以前在 Glassfish 里面测试的时候,访问会自动转向 Https,证书似乎是部署的时候 Glassfish 自动管理的。

https://github.com/hantsy/javaee8-by-example-gitbook/blob/master/servlet-push.md
hantsy
2021-01-03 13:33:43 +08:00
@u6b7b5fc3 这种如果官方文档没说明应该尝试看源代码中的《《《测试代码》》》。https://docs.spring.io/spring-framework/docs/current/reference/html/index.html
hantsy
2021-01-03 13:35:41 +08:00
不过回过头,加证书不一定要在你的 java 程序里面,部署的时最常见的一种方法是放在前面一层的 Reverse Proxy ( Side Car )里面去,如 Ngnix 之类。
learningman
2021-01-03 13:57:44 +08:00
一般都是 nginx 反代,然后这些传输层的协议用 nginx 来处理
u6b7b5fc3
2021-01-03 16:13:44 +08:00
@hantsy 谢谢大佬提醒
u6b7b5fc3
2021-01-03 16:14:15 +08:00
@hantsy 应该用反代的,不应该直接写在 SpringBoot 里面

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/741182

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX