小编skh*_*skh的帖子

使用 AWS Application Load Balancer 的 Websocket 超时

当我尝试在 Elastic Beanstalk 环境中使用应用程序负载均衡器来使用专门用于 Websocket 的端口时,出现网关超时问题。

Web 应用程序和 websocket 服务器保存在 Docker 容器中,应用程序运行良好,但 wss://domain.com:8080 会超时。

这是负载均衡器侦听器,使用 wss 的 SSL 证书。 应用程序负载均衡器侦听器

它指向的目标组接受 HTTP 的“协议”(我尝试过 HTTPS)并转发到 8080 到 EC2 实例上。或者..应该是。(应用程序负载均衡器上的 TCP 似乎不是一个选项)。

我查看了应用程序负载均衡器日志,看起来它已到达目标组,但在与 EC2 实例的连接之间超时,我很困惑为什么。

目前,所有 AWS 安全组已在所有流量上打开,我检查了主机,发现该端口已打开并且正在被 Nginx 监听,Nginx 将路由到 docker 容器的正确端口: EC2主机实例开放端口

docker ps还向我展示: 码头工人

一旦进入容器,我可以看到 Websocket 服务器正在侦听该端口: 在此输入图像描述

那么它不可能是 EC2 实例本身,不是吗?通过 ALB 中的端口路由 Websocket 是否存在问题?

- 编辑 -

目前 ALB 的 SG:

白蛋白

EC2 实例 SG: EC2

amazon-web-services websocket docker amazon-elastic-beanstalk

5
推荐指数
2
解决办法
8078
查看次数

PHP SESSION变量麻烦

我很抱歉打扰你,我尽力解决这个问题,但我不确定我哪里出错了,我想知道那里的人是否愿意帮忙!

基本上,我遇到了一些$ _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呀学语道歉或者这对我来说是否是一个简单的解决/误解.这引起了很大的麻烦!

非常感谢.

-编辑-

这是一个从同一个类中调用的函数,它在任何地方都没有经过循环.

php session

1
推荐指数
1
解决办法
141
查看次数