mqtt.esm.js:8 WebSocket connection to 'wss://8.148.196.112:8084/mqtt' failed:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云 ECS 完全支持 WebSocket 加密传输(即 wss:// 协议)。
官方解决档案:https://help.aliyun.com/zh/api-gateway/cloud-native-api-gateway/user-guide/create-a-websocket-api?source=5176.29345612&userCode=e6tbwq9f
不过,ECS 本身作为一台云服务器,并不会默认自动为你开启 WebSocket 加密。你需要根据自己的业务场景,在服务器内部或结合阿里云的其他网络产品进行配置。
以下是实现 WebSocket 加密传输的几种常见方式:
在 ECS 内部配置 Web 服务器(最常用)
如果你是在 ECS 上部署了自己的 Web 服务(如 Node.js、Python、Java 等),最标准的做法是在 ECS 内部安装并配置 Nginx 或 Apache 作为反向代理。
申请 SSL 证书:你可以申请阿里云的免费个人测试证书或付费正式证书。
配置 Nginx:在 Nginx 配置文件中监听 443 端口,加载 SSL 证书(配置 ssl_certificate 和 ssl_certificate_key),并将请求代理转发到你本地的 WebSocket 服务端口(例如 8001 端口)。
安全组放行:确保 ECS 的安全组入方向规则中,已经放行了 443 端口的 TCP 流量。
使用阿里云边缘安全加速(ESA/DCDN)
如果你的 ECS 前面挂载了阿里云的 CDN 或 DCDN(现在统称为边缘安全加速 ESA),可以直接利用云产品的功能来实现加密。
开启 WebSocket 功能:在 ESA/DCDN 的控制台域名管理中,开启 WebSocket 支持。
配置 HTTPS:在云产品的 HTTPS 配置中上传你的 SSL 证书。
回源协议:你可以选择让客户端通过 wss:// 加密连接到阿里云边缘节点,然后边缘节点再通过 HTTP 或 HTTPS 回源到你的 ECS。
直接使用 IP 访问(无域名场景)
如果你没有绑定域名,只是想通过 wss://<公网IP>:端口 的方式直接访问 ECS,这也是可行的,但配置稍微复杂一些:
申请 IP SSL 证书:你需要向支持 IP 证书的 CA 机构申请专门的 IP SSL 证书(普通的域名证书无法绑定 IP)。
配置服务:将获取到的 IP 证书配置到你的 Web 服务器或应用程序中。
💡 补充说明:VPC 流量加密
除了上述针对公网访问的加密外,阿里云 ECS 还支持 VPC 流量加密。但这主要用于保护同一 VPC 内或同地域跨 VPC 的 ECS 实例之间的私网通信。它目前仅支持部分特定规格族(如 g9ae、c9ae 等),且处于邀测阶段,与常规的公网 WebSocket 加密传输是两个不同的概念。
总结来说,只要你在 ECS 上配置好了 SSL 证书,并确保防火墙(安全组和系统内部防火墙)放行了对应的 443 端口,就可以顺利实现 WebSocket 的加密传输。