对 ELB [使用代理协议] 和 Ngnix 代理服务器后面的 Websocket 的请求



我正在尝试获取连接到 Nodejs websocket 服务器的客户端 IP。 这个博客是我关注的 http://blog.seafuj.com/using-elb-with-websockets .这正在工作,并且正在获取客户端IP。

现在我的问题是这样的: 一旦通过ELB和ngnix从客户端到服务器进行初始握手和连接;来自客户端的后续请求[sendText()]是否会通过ELB或者他们会绕过 ELB 直接进入网络服务器。

示例客户端代码:

var connection = ws.connect('ws://<ELB>:80');
connection.on("connect", function () {
console.log("Connection established");
connection.sendText("Hi");
connection.sendText("Hello");           
})

在评论中,我读到了这一点

2)从这一刻起,在此TCP连接的生命周期内, ELB 在客户端和后端之间保持准直接连接 服务器。3)"准直接"是指连接是通过代理的 ELB。因此,当TCP连接处于活动状态时,ELB完全知道 参与的两个端点(客户端和后端服务器)。– 扬-菲利普·格尔克

我怎么不清楚 tcp 请求 [不是握手和连接建立] 是直接进入服务器还是通过 ELB->ngnix -> websoket 服务器。

在 ELB 中启用代理协议将在标头中添加源 ip、目标 ip 等信息,除此之外它不会执行任何其他操作。对服务器的所有请求将仅通过 elb。 如果您想验证它是否使用私有 IP 在私有子网中启动服务器,上面有 ELB,它仍然可以工作。

最新更新