0

我找到了一些文档,并成功地使用 nginx 为 MQTT 实现了负载平衡。

stream {

    upstream broker {

        server 10.1.0.3:1883 fail_timeout=1s max_fails=1;
        server 10.1.0.5:1883 fail_timeout=1s max_fails=1;


    }

    server {

#       access_log /var/log/nginx/access.log;
#        error_log /var/log/nginx/error.log;

        listen 1883;
        listen 8883;

        proxy_pass broker ;

        proxy_connect_timeout 1s;

    }

}

现在,我正在尝试使 mqtts 工作。我有一个域,具有功能性 SSL,并且该站点正确处理 Web 的负载平衡。

正如您所看到的 mqtt 的设置,这些设置很好用。现在,我应该添加证书。

我首先添加了这些行(在网络设置中)

ssl_certificate /etc/nginx/ssl/domain/server.crt;
    ssl_certificate_key /etc/nginx/ssl/domain/server.key;

    ssl_protocols TLSv1.2;

但可悲的是,这就是我对服务器端知识的了解程度。

我是否需要:将证书信息复制到本地网络上的机器并告诉负载均衡器转发到这些机器上的 mqtts?

我确实注意到网络监听器中的“位置”区域有很多 proxy_header 命令,也许这里需要一些?

同样,我在这里几乎没有经验,所以我有点在黑暗中刺伤。

4

1 回答 1

0

是的,它奏效了。它只是缺少侦听字符串末尾的 ssl。现在它成功地使用 SSL 证书进行负载平衡并传递到网络上的本地 mqtt。再一次,我很抱歉发布这样一个微不足道的问题......希望其他人看到我的错误并从中受益

stream {

    upstream broker {

        server 10.1.0.3:1883 fail_timeout=1s max_fails=1;
        server 10.1.0.5:1883 fail_timeout=1s max_fails=1;


    }

    server {

#       access_log /var/log/nginx/access.log;
#        error_log /var/log/nginx/error.log;
ssl_certificate /etc/nginx/ssl/domain/server.crt;
    ssl_certificate_key /etc/nginx/ssl/domain/server.key;

    ssl_protocols TLSv1.2;


        listen 1883;
        listen domain.com:8883 ssl;

        proxy_pass broker;

        proxy_connect_timeout 1s;
    }

}
于 2021-01-13T10:29:26.300 回答