前段时间在做一个物联网平台的项目,需要用emq作为硬件mqtt传输协议的接收容器。为了方面硬件对接和未来的项目迁移,需要分配一个专门的域名

1、进入/usr/local/nginx/conf 配置文件目录,vim nginx.conf 编辑文件,添加配置内容

stream {
     upstream mqttserver{
        ## emq 端口为1883
        server 172.19.76.146:1883 max_fails=1 fail_timeout=10s; 
     }

     server{                           
         ## nginx 监听端口
         listen 8090; 
         proxy_pass mqttserver;  # mqttserver 和 upstream mqttserver 保持一致
     }
}

2、创建一个文件夹存放每个项目的配置文件(方便管理)

mkdir tcp.d
cd tcp.d
vim mqtt.conf

3、在vi mqtt.conf 添加配置信息,然后保持

stream {
    upstream socket_proxy {
        hash $remote_addr consistent;
        server 172.19.76.146:1883 weight=5 max_fails=3 fail_timeout=30s;
    }
    server {
       listen 80; 
       server_name mqtt.xxxx.com; //你分配的域名
       proxy_connect_timeout 1s;
       proxy_timeout 3s;
       proxy_pass socket_proxy;
    }
} 

4、测试一下配置是否有问题,如果没有则重启即可

/usr/local/nginx/sbin/nginx -t

注nginx 可能会提示stream 不存在的错误,是因为没有nginx 开启stream,这时回到然后的安装文件目录(有 .configure的那个目录),开启stream配置,再重新测试一下配置是否有问题

./configure  --with-stream

#当然也可以在第一次安装的时候,顺便开启

如果没有问题,重新加载配置即可

/usr/local/nginx/sbin/nginx -s reload

5、最后在 application.yml上配置好信息,使用域名测试一下。

#MQTT配置信息
spring:
  mqtt:
    username:      #MQTT-用户名
    password:   #MQTT-密码
    url: tcp://mqtt.xxxx.com:8090  #MQTT-服务器连接地址,如果有多个,用逗号隔开
    client:
      id: 54503050FF3305D25952333152155111  #MQTT-连接服务器默认客户端ID
    default:
      topic: xxxxxx  #MQTT-默认的消息推送主题,实际可在调用接口时指定

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐