Nginx容器转发MQTT Mosquitto Broker连接失败求助
修复Nginx反向代理MQTT Mosquitto的网络协议错误
问题根源
- Nginx代理目标错误:Nginx容器内的
127.0.0.1指向容器自身,无法访问同Docker网络下的MQTT Broker容器。Docker Compose默认会为服务创建专属网络,服务名可直接作为域名解析到对应容器。 - Mosquitto配置挂载路径错误:挂载路径末尾多了个
.,导致配置文件无法正确加载,可能引发Broker运行异常。
修复后的配置
Docker Compose配置
version: '3.8' services: mqtt-broker: image: eclipse-mosquitto:1.6.13 container_name: mqtt-broker user: "1000:1000" ports: - 1883:1883 - 9001:9001 volumes: - ./config/mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf:ro mqtt-nginx: image: nginx:latest container_name: mqtt-nginx ports: - '1884:1884' depends_on: - mqtt-broker volumes: - ./config/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
Nginx配置文件
events { worker_connections 1024; } stream { server { listen 1884; proxy_pass mqtt-broker:1883; } }
验证步骤
- 重启容器使配置生效:
docker-compose down && docker-compose up -d
- 重新测试MQTT订阅:
mosquitto_sub -h 127.0.0.1 -p 1884 -t mytopic
- 可同时用发布命令验证连通性:
mosquitto_pub -h 127.0.0.1 -p 1884 -t mytopic -m "test message"
内容的提问来源于stack exchange,提问作者Gadour Brahem
相关产品推荐
相关产品推荐

