监听器配置
监听器定义了 YedMQ 如何接收 MQTT 客户端与管理工具的请求。YedMQ 当前支持多种协议,以覆盖设备接入、浏览器接入和运维接口。
支持的协议
- TCP:标准 MQTT(默认端口
1883) - TCP-TLS:基于 TLS 的安全 MQTT(默认端口
8883) - WebSocket (WS):基于 WebSocket 的 MQTT(默认端口
8083) - WebSocket Secure (WSS):基于加密 WebSocket 的 MQTT(默认端口
8084) - API:REST 管理 API(默认端口
3456)
TCP 监听器
用于标准未加密 MQTT 连接。
[listener.tcp]
external = "0.0.0.0:1883"
[listener.tcp.rate_limit]
messages_rate = 1000
messages_burst = 100
external:监听地址与端口rate_limit.messages_rate:每秒允许的最大入站PUBLISH报文数rate_limit.messages_burst:限流窗口内允许的突发数量- 将
messages_rate <= 0或messages_burst <= 0设为关闭该监听器的发布限流
TCP-TLS 监听器
用于加密的 MQTT 连接。
[listener.tcp_tls]
external = "0.0.0.0:8883"
verify_client_cert = false
cacert_file = "/path/to/ca.crt"
cert_file = "/path/to/server.crt"
key_file = "/path/to/server.key"
[listener.tcp_tls.rate_limit]
messages_rate = 1000
messages_burst = 100
external:TLS MQTT 的监听地址与端口verify_client_cert:为false时是普通 TLS;为true时启用并强制客户端证书校验cacert_file:当verify_client_cert = true时,用于校验客户端证书的受信任 CA 证书文件cert_file:PEM 编码的证书链文件key_file:PEM 编码的私钥文件- 当
verify_client_cert = false时,监听器只做服务端 TLS,不请求客户端证书 - 当
verify_client_cert = true时,客户端必须提供由cacert_file对应 CA 签发的证书
WebSocket 监听器
用于浏览器侧的 MQTT over WebSocket。
[listener.ws]
external = "0.0.0.0:8083"
[listener.ws.rate_limit]
messages_rate = 1000
messages_burst = 100
external:WS 监听地址与端口
WSS 监听器
用于加密的 MQTT over WebSocket。
[listener.wss]
external = "0.0.0.0:8084"
verify_client_cert = false
cacert_file = "/path/to/ca.crt"
cert_file = "/path/to/server.crt"
key_file = "/path/to/server.key"
[listener.wss.rate_limit]
messages_rate = 1000
messages_burst = 100
external:WSS 监听地址与端口verify_client_cert:设为true时,为 WSS 监听 器启用 mTLScacert_file:用于校验 WSS 客户端证书的受信任 CA 证书文件cert_file:证书链文件key_file:私钥文件- WSS 监听器会从
[listener.wss]自己的字段读取证书和私钥,不会复用 TLS MQTT 监听器的证书配置
API 监听器
用于配置 REST 管理 API 及其 Basic Authentication 用户。
[listener.api]
external = "127.0.0.1:3456"
[listener.api.auth]
users = []
# 例如:
# users = [{ username = "admin", password = "replace_me" }]
external:管理 API 的监听地址与端口;仓库自带配置默认只监听 localhostauth.users:允许访问/api/v1/*的 Basic Authentication 用户列表;若要把 API 暴露到 localhost 之外,至少先配置一个用户