Eclipse Mosquitto 是一个mqtt的代理服务器。
配置协议
现有场景是,服务器端和浏览器端都要连接到mqtt代理,并使用mqtt协议通信。
服务器端使用mqtt协议即可正常连接,但浏览器不支持mqtt协议。所以需要mqtt代理配置websocket协议,来兼容浏览器的连接。
mqtt协议配置
mosquitto.conf
listener 1883 0.0.0.0
protocol mqtt
websocket协议配置
mosquitto.conf
listener 1884 0.0.0.0
protocol websockets
安全的websocket协议配置(websocket over TLS)
mosquitto.conf
listener 1885 0.0.0.0
protocol websockets
cafile /mosquitto/cert/xxx_chain.crt
certfile /mosquitto/cert/xxx_public.crt
keyfile /mosquitto/cert/xxx.key
可以同时配置多个listener,以实现多个端口/协议协作。
如果要将不同的用户端隔离开来,mount_point
是额外需要配置的参数。
配置用户
mosquitto.conf
# 关闭匿名模式
allow_anonymous false
# 指定密码文件
password_file /mosquitto/config/pwfile.conf
新建密码存储文件
touch /mqtt-mosquitto/config/pwfile.conf
修改文件夹权限
chmod -R 755 /data/mqtt-mosquitto
启动后,使用mosquitto_passwd
命令来操作用户
# 新增/修改用户。对同一个用户名,多次使用,就是修改密码
mosquitto_passwd -b /mosquitto/config/pwfile.conf username password
# 删除用户
mosquitto_passwd -D username
总结
- Mosquitto支持的协议
- 支持mqtt原生协议
- 支持websocket协议(ws)
- 支持TLS的websocket协议(wss)
- Mosquitto可以同时开放多个端口/协议连接相同/不同的隔离空间
- 建议配置用户名密码来连接代理,更安全