This topic created in 1116 days ago, the information mentioned may be changed or developed.
有几个问题不太明白,有没有大佬解答一下
1.nginx 代理 websocket 请求时,握手阶段是 nginx 来完成的,还是由后端 ws 服务器来完成的?
2.nginx 是不是需要跟后端 ws 也建立一个 websocket 连接:ws 客户端 <-> nginx <-> 后端,将客户端和后端两个连接关联起来,然后透传客户端的 tcp 流量到后端?
6 replies • 2023-10-16 10:45:46 +08:00
 |
|
握手当然是客户端和 nginx 和后端服务器都会进行的。握手其实就是最开始那个 http 请求,客户端发请求给 nginx ,nginx 发请求给后端,后端返回给 nginx ,nginx 返回给客户端。 nginx 是要和后端建立连接,但 nginx 不需要解析其中的 WebSocket 协议数据。根据 http 协议,开头的请求和响应已经升级了协议,后续 nginx 只需要原样传递 TCP 通道的数据即可,就类似 http 代理的 CONNECT 功能。
|
 |
|
websocket 的开头就是个 http 难道这么大量写 websocket 的人都不知道这事??
|
 |
|
反证法: 握手四要素:源 IP 、源端口、目标 IP 、目标端口。 client:什么?目标 IP 是个局域网地址?连不上,卒。 server:什么?源 IP 是个外网 IP ?没有外网出口,卒。
综上,握手是 client-ng 和 ng-server 之间分别进行的。
|
 |
|
1.client 和 nginx 通信,nginx 再和 server 通信 2.是的。
|
 |
|
http connect , 中间想传啥传啥
|
 |
|
中转站!
|