【问题标题】:Requests to Websockets behind ELB [with proxy protocol] and Ngnix proxy server对 ELB [使用代理协议] 和 Nginx 代理服务器后面的 Websockets 的请求
【发布时间】:2017-08-24 00:03:01
【问题描述】:

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

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

示例客户端代码:

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

在 cmets 中超过 here 我读到了

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

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

【问题讨论】:

    标签: node.js sockets tcp proxy amazon-elb


    【解决方案1】:

    在 ELB 中启用代理协议将在标头中添加诸如源 ips、目标 ips 等信息,但它不会做任何其他事情。所有对服务器的请求将仅通过 elb。 如果您想验证它在私有子网中启动服务器,并在其上使用带有 elb 的私有 ip,它仍然可以工作。

    【讨论】:

    • 如果请求是 http,那么您的回答肯定是肯定的。自从 ws 是面向连接的以来,我想知道一旦初始握手完成..ELB 是否甚至会出现在后续的 .sendText() 中。
    • 是的 ws 是面向连接的,但它也是在 tcp 权利之上实现的,如果你仍然不相信尝试这个,将 ELB 中的空闲超时减少到 5 秒(默认 60 秒)并且不要向连接发送任何数据 5 秒,ELB 将终止您的连接。
    猜你喜欢
    • 2015-01-05
    • 2020-09-06
    • 2018-07-01
    • 1970-01-01
    • 2013-05-04
    • 2019-10-28
    • 1970-01-01
    • 2020-05-03
    • 2014-11-01
    相关资源
    最近更新 更多