CNode

实现http和https共用同一个端口

分享
Llvgithub发布于8 年前最后回复8 年前10 回复7738 浏览0 收藏

实现http和https共用一个端口原理

1. HTTP与HTTPS都属于应用层协议,所以只要我们在底层协议中进行反向代理,
就可以解决这个问题! 因此我们可以选择底层的tcp服务进行代理!
2. https数据流的第一位是十六进制“16”,转换成十进制就是22
3. 通过数据流的第一位置,决定最终反向代理给http\https服务
4. 具体实现方案有如下三种

源码地址,欢迎下载测试,提出更好的方案,持续更新优化

  • 方案一 1.png

  • 方案二 1.png

  • 方案三 3.png

查看回复

回复 (10)

L
lvgithub#1·8 年前

知识点: 1. http和https的区分 2. socket 3. 背压 4. stream

B
Binaryify#3·8 年前

这个在 nginx 下很容易实现的,还不需要改原有代码

B
burning0xb#4·8 年前

背压比较好的解决方案楼主能提供下吗

R
royalrover#5·8 年前

方案一与方案三出了 socket readable部分处理头部首字节的不同,还有区别点吗?其实方案二才是最适合的,这在child_process创创建多进程的服务模式下是最常用的

L
lvgithub#7·8 年前
R
royalrover#8·8 年前
引用 lvgithub@royalrover 为什么方案3 最合适

@lvgithub 我说的是方案二,直接通过emit connection事件处理,不用手动操作socket进行pipe

这有什么意义吗?

参与回复
登录后即可参与回复。登录