You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose部署Traefik+Mosquitto时wss安全WebSocket无法连接问题

问题根因

你配置的MQTT WebSocket对应Traefik HTTP路由绑定了websecure(443端口)入口,但前端WSS请求发往的是9001端口对应的websocket入口,该入口没有配置对应的路由规则与TLS证书,导致连接失败。

修复步骤

修改docker-compose.yml中mqtt服务的labels配置,将HTTP路由的入口指向websocket并确保TLS生效:

labels:
  - "traefik.enable=true"

  # 调整WebSocket对应HTTP路由的入口为9001对应的websocket入口
  - "traefik.http.routers.mqtt.rule=Host(`broker.mydomain.com`)"
  - "traefik.http.routers.mqtt.entrypoints=websocket" # 这里从原有的websecure改成websocket
  - "traefik.http.routers.mqtt.tls.certresolver=letsencrypt"
  - "traefik.http.services.mqtt.loadbalancer.server.port=9001"

  # 原有TCP路由配置不变,对应8883的mqtts连接
  - "traefik.tcp.routers.mqtt.rule=HostSNI(`broker.mydomain.com`)"
  - "traefik.tcp.routers.mqtt.entrypoints=mqtt"
  - "traefik.tcp.routers.mqtt.tls.certresolver=letsencrypt"
  - "traefik.tcp.services.mqtt.loadbalancer.server.port=8883"

额外检查项

  • 确认云端服务器安全组/防火墙已放行9001端口的入站TCP流量
  • 改完配置后执行docker-compose down && docker-compose up -d重启服务生效
  • 可先用wscat工具测试WebSocket连通性,排除前端代码问题:wscat -c wss://broker.mydomain.com:9001

内容的提问来源于stack exchange,提问作者tsantor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:45:03