问题描述
我找到了一些文档并成功地使用 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,并且该站点可以正确处理网络负载平衡。
正如您所看到的 mqtt 设置,这些设置很好用。现在,我应该添加证书。
我首先添加了这些行(在 Web 设置中)
ssl_certificate /etc/Nginx/ssl/domain/server.crt;
ssl_certificate_key /etc/Nginx/ssl/domain/server.key;
ssl_protocols TLSv1.2;
但遗憾的是,这就是我对服务器端知识的了解程度。
我需要: 将证书信息复制到本地网络上的机器并告诉负载均衡器转发到那些上的 mqtts?
我确实注意到网络侦听器中的“位置”区域有很多 proxy_header 命令,也许这里需要一些命令?
解决方法
是的,它奏效了。它只是缺少监听字符串末尾的 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;
}
}