微信小程序接入emq

微信小程序接入emq

环境

  1. emq v2.3.0
  2. lnmp
  3. 微信开发工具
  4. ubutun 16.04

1. 下载demo

微信小程序 MQTT 接入Demo下载地址
下载完成后,打开工程,修改index.js文件,主要修改host
小程序要求请求要是https的,但是我们这里使用的是nginx反向代理,将443端口的请求代理至8083端口,所以我认为这个port可以不写。ngix反向代理https请求

const host = 'wxs://已经备案过的域名/mqtt';

注意: 虽然/mqtt不是必须固定的,这取决与在nginx中如何配置,但是为了规范化,我们最好这么来写

2. 添加证书,修改emq配置文件

进入 emq的etc目录,找到emq.conf文件,找到如下配置:

# ssl证书的秘钥
listener.ssl.external.keyfile = etc/certs/key.pem
# ssl证书的cert
listener.ssl.external.certfile = etc/certs/cert.pem
# CA证书
listener.ssl.external.cacertfile = etc/certs/cert.pem

需要注意的是: 第三项配置默认是注释掉的,需要打开注释,然后将各文件路径匹配对,这里我将自己证书文件修改了名字,放在了 /emqttd/etc/certs/下

同样的在emq.conf中还有关于websocket的配置:

listener.wss.external.keyfile = etc/certs/key.pem
listener.wss.external.certfile = etc/certs/cert.pem

这里我并没有将第三行的注释打开,也可以运行,具体原因未知。

3. 修改nginx配置文件,增加反向代理

进入/usr/local/nginx/conf目录,打开nginx.conf, 增加server段

server
{
	# 服务器域名,必须是域名,不能是 ip
    server_name 自己的域名;
    # error page  可以自己设置
    error_page   404   www.baidu.com;
    # 监听 443端口
    listen 443 ssl;
    # 开启ssl
    ssl on;
    # 建议将 证书 拷贝一份至 /usr/local/nginx/conf/ssl 下
    ssl_certificate /usr/local/nginx/conf/ssl/cert.pem;
    ssl_certificate_key /usr/local/nginx/conf/ssl/kltaiot2021.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

	# 增加 请求  举例: 如果访问 https://server_name/mqtt  
	# nginx会将上面的访问转至  proxy_pass  即实际访问的是http://localhost:8083
    location /mqtt {
        proxy_pass http://localhost:8083;
        proxy_redirect off;
        proxy_set_header Host localhost:8083;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

通过以上步骤,就可以将443端口来的https请求转接至8083http请求,再来一遍那张图:

ngix反向代理https请求

4. 重启emq 、 nginx服务器进行测试

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值