当我尝试在 Elastic Beanstalk 环境中使用应用程序负载均衡器来使用专门用于 Websocket 的端口时,出现网关超时问题。
Web 应用程序和 websocket 服务器保存在 Docker 容器中,应用程序运行良好,但 wss://domain.com:8080 会超时。
它指向的目标组接受 HTTP 的“协议”(我尝试过 HTTPS)并转发到 8080 到 EC2 实例上。或者..应该是。(应用程序负载均衡器上的 TCP 似乎不是一个选项)。
我查看了应用程序负载均衡器日志,看起来它已到达目标组,但在与 EC2 实例的连接之间超时,我很困惑为什么。
目前,所有 AWS 安全组已在所有流量上打开,我检查了主机,发现该端口已打开并且正在被 Nginx 监听,Nginx 将路由到 docker 容器的正确端口:

一旦进入容器,我可以看到 Websocket 服务器正在侦听该端口:

那么它不可能是 EC2 实例本身,不是吗?通过 ALB 中的端口路由 Websocket 是否存在问题?
- 编辑 -
目前 ALB 的 SG:
amazon-web-services websocket docker amazon-elastic-beanstalk
我很抱歉打扰你,我尽力解决这个问题,但我不确定我哪里出错了,我想知道那里的人是否愿意帮忙!
基本上,我遇到了一些$ _SESSION变量的问题; 我希望每次访问者都能访问该页面时会显示不同的内容消息.以下代码首次登陆页面时似乎会跳过第一个"content1",并显示"content2"相反,然后再次访问"content3".我已经进行了一次未设置的调用,最终将其发送到那里,我没有正确使用_SESSIONS吗?
我不确定会话变量是如何分配给1的,因为它在if === 1语句中正确着陆而没有首先返回原始的"content1"
if (empty($_SESSION)) {
session_start();
}
if (!isset($_SESSION['content'])) {
$content = "content1";
$_SESSION['content'] = 1;
return $content;
}
elseif ($_SESSION['content'] === 1) {
$content = "content2";
$_SESSION['content'] = 2;
return $content;
}
elseif($_SESSION['content'] === 2) {
$content = "content3";
unset($_SESSION['content']);
return $content;
}
Run Code Online (Sandbox Code Playgroud)
为bab呀学语道歉或者这对我来说是否是一个简单的解决/误解.这引起了很大的麻烦!
非常感谢.
-编辑-
这是一个从同一个类中调用的函数,它在任何地方都没有经过循环.