有时候需要迅速拉起一个MQTT Broker
使用,而轻量的NanoMQ和Docker搭配再合适不过,因为考虑到公网传输,所以会使用SSL加密,最终的协议就是 wss://
配置文件
针对文件/etc/nanomq/nanomq.conf
写入以下配置:
# NanoMQ Configuration 0.18.0
# #============================================================
# # NanoMQ Broker
# #============================================================
mqtt {
property_size = 32
max_packet_size = 260MB
max_mqueue_len = 2048
retry_interval = 10s
keepalive_multiplier = 1.25
# Three of below, unsupported now
max_inflight_window = 2048
max_awaiting_rel = 10s
await_rel_timeout = 10s
}
listeners.ws {
bind = "0.0.0.0:8083/mqtt"
}
log {
to = [file, console]
level = warn
dir = "/tmp"
file = "nanomq.log"
rotation {
size = 10MB
count = 5
}
}
auth {
allow_anonymous = false
no_match = allow
deny_action = ignore
cache = {
max_size = 32
ttl = 1m
}
# 配置密码认证
password = {
"admin": "123234zxc"
}
}
Docker 部署
docker run -d --restart unless-stopped \
--name nanomq-ws \
-p 8083:8083 \
-v /etc/nanomq/nanomq.conf:/etc/nanomq.conf \
emqx/nanomq:latest
然后浏览器访问http://你的IP:8083/
如果出现一个404页面,则表示启动成功,具体也可看 docker log 日志。
SSL配置
其实NanoMQ自身可以配置证书,但维护SSL是一件繁琐的事情,个人喜欢将证书交给Caddy
自动维护,所以利用Caddy反代一下 NanoMQ自身的ws协议,再配合Caddy自身主动维护SSL证书,于是就得到咯wss://
这个步骤说的比较笼统,但原理就是这个原理,这里给出一个Caddy参考配置:
{
"admin": {
"disabled": true
},
"apps": {
"http": {
"servers": {
"site": {
"listen": [
":80",
":443"
],
"routes": [
{
"match": [
{
"host": [
"您的域名"
]
}
],
"handle": [
{
"handler": "reverse_proxy",
"upstreams": [
{
"dial": "172.17.0.1:8083"
}
]
}
]
}
]
}
}
}
}
}
MQTTX连接配置
客户端连接参考配置: