mqtt的nginx和websocket部署

本文讲述了作者如何在公司限制了MQTT的原端口后,通过生成密码文件、调整Mosquitto配置、使用Docker映射文件和Nginx代理,将MQTT服务迁移到80端口并启用WebSocket协议的过程。

本来mqtt用的好好的,公司信息安全把端口给封了,就给一个80,所以mqtt只能走这个端口,记录一下过程

1 生成密码文件 搞一个pwd.txt 写着username: pwd 然后 mosquitto_passwd -U passwordfile 就会生成一个pwd.txt

2 mosquitto的配置,注意要走websocket


persistence true
persistence_location /mosquitto/data

log_dest file /mosquitto/log/mosquitto.log


# 服务绑定的端口号 默认是1883 
# 服务绑定的IP地址 websockets 一定要在listener的下方,不然会错误
listener 18231 0.0.0.0
protocol websockets


allow_anonymous false
password_file /etc/mosquitto/pwd.txt

3 docker 启动命令,注意文件的映射:

docker run   -d --name mqtt  --net host --restart always -v /data/mqtt/log:/mosquitto/log -v /data/mqtt/data:/mosquitto/data  -v /data/mydocker/mqtt/mosquitto.conf:/mosquitto/config/mosquitto.conf  -v /data/mydocker/mqtt/pwd.txt:/etc/mosquitto/pwd.txt eclipse-mosquitto:latest

4 nginx的配置,位置在server里面,注意/mqtt是默认的,有的是/ws,我这个是/mqtt

  location /mqtt {
        proxy_pass "http://$myhost:18231";
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
  }
Nginx是一个功能强大的开源Web服务器,同时也支持反向代理负载均衡。如果你想将MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)服务转换为WebSocket(一种全双工通信协议),Nginx可以作为一个中介,实现这种转换。 通常情况下,Nginx通过配置文件`nginx.conf`中的proxy_pass指令,可以作为MQTT服务器WebSocket客户端之间的桥梁。以下是基本的步骤: 1. **安装配置Nginx**:确保你已经在服务器上安装了Nginx,并配置了一个监听HTTP/HTTPS流量的入口块。 2. **启用WebSocket模块**:确保Nginx配置中启用了ngx_http_upstream_proxy_module模块,这对于处理WebSocket连接至关重要。 3. **创建location块**:在配置文件中添加一个location块,指定MQTT服务器的URLWebSocket的转发地址。例如: ``` location /mqtt { proxy_pass http://your-mqtt-server:1883; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; } location /ws { proxy_pass http://your-websocket-endpoint:8080; # 设置WebSocket特定的头部信息 } ``` 第一行设置了原始请求的路径`/mqtt`将转发到MQTT服务器,后两行设置了WebSocket升级头信息,用于告诉浏览器这是一个WebSocket连接。 4. **启动Nginx**:保存并重启Nginx,使其应用新的配置。 5. **测试**:从WebSocket客户端发起连接到`/ws`路径,Nginx会自动检测并将其转化为MQTT连接,然后将MQTT的消息传递给WebSocket客户端。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值