目标
Emqx使用Nginx进行反代并且进行SSL证书部署实现MQTTS协议接入服务器
首先解析一个域名到服务器(使用A记录):
例如:mq.abc.com
操作步骤
Emqx安装(Docker版本)
docker pull emqx
Emqx使用的协议如下:
协议 | 端口号 |
mqtt | 1883 |
mqtts | 8883 |
ws | 8083 |
wss | 8084 |
如果要让Emqx支持SSL,有两种方式
1、使用OpenSSL生成证书,在Emqx网页后台添加SSL相关证书内容即可
(1) 可以使用第三方付费或者证书
(2) 可以使用自签证书。使用自签证书可以参考OpenSSL签发内网IP的SSL证书
2、使用Nginx反代Emqx服务,用Nginx进行SSL证书管理。
在Nginx配置加上
stream {
upstream mqtt_servers {
server 127.0.0.1:1883;
}
server
{
listen 6540 ssl;
server_name mq.abc.com;
proxy_pass mqtt_servers;
proxy_buffer_size 8k;
tcp_nodelay on;
proxy_connect_timeout 10s;
proxy_timeout 1800s;
ssl_certificate /www/server/panel/vhost/cert/mq.abc.com/cert.pem;
ssl_certificate_key /www/server/panel/vhost/cert/mq.abc.com/cert_key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
}
}
注意:此配置是写在stream块里的,也就是说走的TCP而非HTTP
使用MQTTX工具,使用MQTTS协议即可成功连接。