跳到主要内容

监听器配置

监听器定义了 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 <= 0messages_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 监听器启用 mTLS
  • cacert_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 的监听地址与端口;仓库自带配置默认只监听 localhost
  • auth.users:允许访问 /api/v1/* 的 Basic Authentication 用户列表;若要把 API 暴露到 localhost 之外,至少先配置一个用户