实现http和https共用同一个端口
实现http和https共用一个端口原理
1. HTTP与HTTPS都属于应用层协议,所以只要我们在底层协议中进行反向代理,
就可以解决这个问题! 因此我们可以选择底层的tcp服务进行代理!
2. https数据流的第一位是十六进制“16”,转换成十进制就是22
3. 通过数据流的第一位置,决定最终反向代理给http\https服务
4. 具体实现方案有如下三种
-
方案一
-
方案二
-
方案三
10 回复
知识点: 1. http和https的区分 2. socket 3. 背压 4. stream
@lvgithub 背压stream是什么?
这个在 nginx 下很容易实现的,还不需要改原有代码
背压比较好的解决方案楼主能提供下吗
方案一与方案三出了 socket readable部分处理头部首字节的不同,还有区别点吗?其实方案二才是最适合的,这在child_process创创建多进程的服务模式下是最常用的
@royalrover 为什么方案3 最合适
@burning0xb 上面代码中就有
@lvgithub 我说的是方案二,直接通过emit connection事件处理,不用手动操作socket进行pipe
@royalrover 是的
这有什么意义吗?