400 对托管在亚马逊应用程序负载均衡器上的套接字连接的错误请求

400 bad request on socket connection hosted on amazon application load balancer

背景

我正在研究kong admin to connect to kong api gateway

我使用的是kong管理员提供的docker file

问题

docker 容器在我的本地机器上运行良好,并且 UI 按预期加载

但是,当我尝试访问托管在 amazon ecs 上的同一个 docker 时,它不起作用。它只是一直显示加载器。

基础设施

docker 容器托管在亚马逊负载均衡器后面,正在侦听端口 80。 然后将端口 80 上的流量转发到 docker 容器内的端口 1337

负载均衡器url - http://staging.host.internal

错误

请求

Request URL: http://staging.host.internal/socket.io/?__sails_io_sdk_version=0.13.8&__sails_io_sdk_platform=browser&__sails_io_sdk_language=javascript&EIO=3&transport=polling&t=MTvxlu9&sid=lH69C1E52B3aGVIwAANl
Request Method: GET
Status Code: 400 Bad Request
Remote Address: xx.xx.xx.xx:xx
Referrer Policy: no-referrer-when-downgrade
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Type: application/json
Date: Tue, 04 Dec 2018 15:56:05 GMT
Transfer-Encoding: chunked
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
Connection: keep-alive
Cookie: io=lH69C1E52B3aGVIwAANl

回应

{"code":1,"message":"Session ID unknown"}

我在控制台中遇到以下错误

WebSocket connection to 'ws://staging.host.internal/socket.io/?__sails_io_sdk_version=0.13.8&__sails_io_sdk_platform=browser&__sails_io_sdk_language=javascript&EIO=3&transport=websocket&sid=j-RcLmqGi5bZoQ4YAAPF' failed: WebSocket is closed before the connection is established.

DEBUG=socket.io.* 的服务器日志上,我得到以下日志

Tue, 04 Dec 2018 15:07:26 GMT socket.io-parser encoding packet
{
    "type": 0,
    "nsp": "/"
}

谁能指出正确的调试方向。我没有起点。

我必须在 ALB 上启用粘性会话,因为我在负载均衡器后面托管了多个 Docker 容器

问题是,在没有粘性会话的情况下,我在一台服务器上登录,我在该服务器上获得了 websocket 会话 ID,并且读取请求在单独的服务器上进行,因此,自加载 serges 以来,我不断获得成功和失败响应平衡。

https://www.looklinux.com/enable-sticky-session-application-load-balancer-aws/