前段时间在做一个物联网平台的项目,需要用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-默认的消息推送主题,实际可在调用接口时指定