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

EMQX集群通过Nginx SSL代理实现MQTT连接失败,但WSS连接正常的问题求助

EMQX集群通过Nginx SSL代理实现MQTT连接失败,但WSS连接正常的问题求助

大家好,我碰到了一个棘手的问题想请教各位:我搭建了一个包含3个节点的EMQX集群,用Nginx做负载均衡。目前通过WSS协议能正常连接到负载均衡器,也能正常获取MQTT主题,但用普通MQTT协议却怎么都连不上集群。

我参考了EMQX官方关于集群负载均衡的部署文档,在nginx.conf里配置了stream段,而且我的Nginx是编译了stream_ssl_module模块的,具体配置如下:

stream {
    log_format basic '$proxy_protocol_addr - $remote_addr [$time_local] '
                    '$protocol $status $bytes_sent $bytes_received '
                    '$session_time';

    access_log  /var/log/nginx/access.log  basic;

    upstream emqx-tcp {
        zone tcp_servers 64k;
        hash $remote_addr;
        server emqx-01.node-01:1883;
        server emqx-02.node-02:1883;
        server emqx-03.node-03:1883;
    }

    server {
        listen 8883 ssl;
        #status_zone tcp_server;
        proxy_pass emqx-tcp;
        proxy_buffer_size 4k;
        ssl_handshake_timeout 10s;
        ssl_certificate /certs/domain.name.crt;
        ssl_certificate_key /certs/domain.name.key;
    }
}

同时,每个EMQX节点的emqx.conf里我都配置了TCP监听器,开启了proxy_protocol:

listeners.tcp.default {
    bind = "0.0.0.0:1883"
    proxy_protocol = true
}

当我尝试用MQTT客户端(我用的是MQTT Explorer)连接时,客户端一直提示“Disconnected from server”,而Nginx的access.log里会出现这些记录:

- - my.ip.addr.ess [10/Jul/2023:13:49:10 +0000] TCP 200 0 79 3.428
- - my.ip.addr.ess [10/Jul/2023:13:49:15 +0000] TCP 200 0 79 3.435
- - my.ip.addr.ess [10/Jul/2023:13:50:01 +0000] TCP 200 0 79 3.478
- - my.ip.addr.ess [10/Jul/2023:13:50:07 +0000] TCP 200 0 79 3.424

另外补充一下,我的WSS连接用的HTTP代理配置是正常工作的,配置如下:

upstream emqx-ws {
    least_conn;
    server emqx-01.node-01:8083 weight=1;
    server emqx-02.node-02:8083 weight=1;
    server emqx-03.node-03:8083 weight=1;
}

server {
    listen 9022 ssl;
    server_name     domain.name;
    ssl_certificate /certs/domain.name.crt;
    ssl_certificate_key /certs/domain.name.key;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400;
        proxy_pass http://emqx-ws/mqtt;
    }
}

我已经把能找到的相关资料都翻了一遍,但还是没能解决这个问题,恳请各位大佬帮忙分析下问题出在哪里!

备注:内容来源于stack exchange,提问作者Rodion Baskakov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 07:04:55