为什么部署好了还是没办法链接


截图看不出是安全组问题;8083 已放通,

下一步要看 EMQX 为什么把 WebSocket 连接断开。
先补这几项:

  1. 打开 EMQX 的 debug 日志开关。
  2. emqx.log 里这个 client_id 连接失败或断开时的 20 行日志,截图里像是 emqx_NzIyOD
  3. 在服务器上执行下面命令,把输出贴出来:
ss -lntp | grep -E '1883|8083|8084|18083'

重点确认 WebSocket 监听器是不是实际监听在 0.0.0.0:8083,并且 websocket.mqtt_path = "/mqtt"
4. 如果开了认证/授权,把认证器配置和是否允许匿名连接也贴一下。
另外确认一下页面协议:如果 Dashboard 是 HTTPS 打开的,浏览器不能连明文 ws://<公网 IP>:8083/mqtt,要改成 WSS:端口 8084,Path 仍然是 /mqtt

最最最后:一般开发不会用这websocket 的调试工具。推荐你使用:https://mqttx.app/

工具也试过了,链接不上

服务端监听已经起来了,安全组也不像是问题;现在要把“连不上”拆成网络不通、协议写错、认证拒绝三类。
你按下面这样测,别混用端口和协议:

MQTT TCP: Host=公网 IP, Port=1883, Protocol=mqtt://,不要填 Path
MQTT over WebSocket: Host=公网 IP, Port=8083, Protocol=ws://,Path=/mqtt
WSS: Host=公网 IP, Port=8084, Protocol=wss://,Path=/mqtt

如果 MQTTX Desktop 用默认 TCP 协议去连 8083,会失败;如果 Dashboard 是 HTTPS 页面,浏览器连 ws://公网 IP:8083/mqtt 也会被拦,改用 wss://公网 IP:8084/mqtt
现在还缺关键证据:EMQX 为什么断开。执行一次连接,同时在服务端看日志:

tail -n 200 /var/log/emqx/emqx.log
# Docker 的话:
docker logs --tail=200 emqx

把连接失败那一段贴出来,重点看 authn_failednot_authorizedbad_username_or_passwordwebsocketmqtt_packet 这类关键字。
再从你本地机器测端口:

nc -vz 公网IP 1883
nc -vz 公网IP 8083
nc -vz 公网IP 8084

如果 1883 都不通,还是云网络/安全组/NAT 问题;如果端口通但 EMQX 日志里有认证失败,就是认证器/用户名密码问题;如果只有 8083 不行,基本是 WebSocket 协议或 /mqtt 路径写错。

谢谢您,服务器防火墙给我拦住了