如何让 netty 同时支持HTTP与HTTPS
在netty 中添加自带的 SslHandler 就能支持HTTPS,但是添加之后使用 HTTP 访问是存在问题的。
请问如何能支持使用用一个端口两种协议并行,比如在某个事件中判断出使用 HTTPS 协议然后在把 SslHandler 添加到 pipeline 中。
SelfSignedCertificate ssc = new SelfSignedCertificate();
SslContext sslCtx = SslContextBuilder.forServer(ssc.certificate(), ssc.privateKey()).build();
SSLEngine sslEngine = sslCtx.newEngine(UnpooledByteBufAllocator.DEFAULT);
ch.pipeline().addFirst( new SslHandler(sslEngine));
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
根据 node如何让一个端口同时支持https与http 文中描述的
https数据流的第一位是十六进制“16”,转换成十进制就是22
,在读取的第一位数据进行判断实现动态添加 ChannelHandler 。反之先添加 sslHandler 在移除也行
让同一个端口监听两种不同的协议,这本身是一个不好的设计,一般
80
端口提供HTTP
协议,443
端口提供HTTPS
协议。不过Netty
已经提供了同一个端口支持SSL
和non-SSL
的工具类OptionalSslHandler
。参考一下:https://github.com/netty/nett...