Skip to content

配置手册

  • listeners

    类型Struct(listeners)

    listeners

    • tcp

      类型Map($name->OneOf(Struct(mqtt_tcp_listener),String("marked_for_deletion")))
      描述

      TCP 监听器。

      mqtt_tcp_listener

      • enable

        别名enabled
        类型Boolean
        默认值true
        描述

        启停监听器。

      • bind

        类型String
        默认值1883
        描述

        监听套接字的 IP 地址和端口。

      • acceptors

        类型Integer(1..+inf)
        默认值16
        描述

        监听器接收池的大小。

      • max_connections

        类型OneOf(String("infinity"),Integer(1..+inf))
        默认值infinity
        描述

        监听器允许的最大并发连接数。

      • mountpoint

        类型String
        默认值""
        描述

        发布或订阅时,请在所有主题前面加上 mountpoint 字符串。

        将消息传递给订阅者时,将从主题名称中删除带前缀的字符串。挂载点是一种用户可以用来实现不同侦听器之间消息路由隔离的方法。

        例如,如果客户机 A 使用 listeners.tcp.<name>.mountpoint 设置为'some_tenant',那么客户端实际上订阅了主题'some_tenant/t'。
        类似地,如果另一个客户端 B(与客户端 A 连接到同一个侦听器)向主题 't' 发送消息,该消息将路由到所有订阅了'some_租户/t'的客户端,因此客户端 A 将接收主题名为't'的消息

        设置为"" 以禁用该功能

        mountpoint 字符串中的变量:

        • ${clientid}: clientid
        • ${username}: username
      • zone

        类型String
        默认值default
        描述

        监听器所属的配置 zone。 连接到此监听器的客户端将继承在此 zone 名称下创建的 zone 设置。

        一个 zone 可以覆盖以下根名称下的配置:

        • mqtt
        • force_shutdown
        • force_gc
        • flapping_detect
        • durable_sessions
      • enable_authn

        类型Enum(true,false,quick_deny_anonymous)
        默认值true
        描述

        配置为 true 时将对启用客户端身份认证,只有通过认证的客户端才会被允许接入。
        配置为 false 时,将不对客户端做任何身份检查,任何客户端都可以直接接入。
        配置为 quick_deny_anonymous 时,EMQX 将直接拒绝未指定用户名的匿名客户端,不会对这些客户端进行任何身份检查,其余行为同 true

      • max_conn_rate

        类型String
        默认值infinity
        描述

        用于限制当前监听器接受连接的速率。一旦达到限制,EMQX 将暂停从 Accept 队列获取连接,从而推迟或拒绝新的连接。
        例如:

        • 1000/s:每秒只接受 1000 个连接。
        • 1000/10s:每 10 秒只接受 1000 个连接。
      • messages_rate

        类型String
        描述

        用于限制单个客户端每秒可以向 EMQX 发送的消息数。一旦达到限制,EMQX 将暂停从接收缓冲区读取数据,从而使发送方减速甚至暂时挂起。
        例如:

        • 500/s:每秒只接收 500 条消息,剩余的消息消息将被推迟。
        • 500/10s:每 10 秒只接收 500 条消息,剩余的消息消息将被推迟。
      • bytes_rate

        类型String
        描述

        用于限制单个客户端每秒可以向 EMQX 发送的字节数。一旦达到限制,EMQX 将暂停从接收缓冲区读取数据,从而使发送方减速甚至暂时挂起。
        字节的单位可以是:KB、MB、GB。
        例如:

        • 500KB/s:每秒只接受 500 千字节,剩余的字节将被推迟。。
        • 500MB/10s:每 10 秒只接收 500 兆字节,剩余的字节将被推迟。
      • access_rules

        类型Array(String)
        默认值["allow all"]
        描述

        由字符串规则组成的访问规则列表,以限制或允许某些地址的访问,规则之间存在前后顺序,格式为 allow | deny <address> | <CIDR> | all
        例如:
        ["deny 192.168.1.1", "allow 192.168.1.0/24", "deny, all"]

      • proxy_protocol

        类型Boolean
        默认值false
        描述

        如果为 EMQX 部署了反向代理,且代理处启用了 PROXY 协议以传递客户端真实 IP 时,则需要一并开启此选项,以便 EMQX 从 PROXY 协议标头中提取客户端真实 IP。EMQX 将自动检测 PROXY 协议的版本,支持 V1 和 V2。
        PROXY 协议的详细说明,请参考:https://www.haproxy.com/blog/haproxy/proxy-protocol/。

      • proxy_protocol_timeout

        类型Duration
        默认值"3s"
        描述

        代理协议超时。如果在超时时间内未收到代理协议数据包,EMQX 将关闭 TCP 连接。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • tcp_options

        类型Struct(tcp_opts)

        tcp_opts

        • active_n
          类型Integer(0..+inf)
          默认值100
          描述

          为此套接字指定{active,N}选项
          See: https://erlang.org/doc/man/inet.html#setopts-2

        • backlog
          类型Integer(1..+inf)
          默认值1024
          描述

          TCP backlog 定义了挂起连接队列可以增长到的最大长度。

        • send_timeout
          类型Duration
          默认值"15s"
          描述

          进程因向繁忙的套接字发送数据而挂起的最长时间,超时后将关闭此 TCP 连接与进程。
          进程解除挂起需要套接字解除繁忙状态,即堆积在 Erlang 内部缓冲区中的数据从高位水线(由 high_watermark 指定)降至低水位线(默认为 4KB)。
          因此 (high_watermark - 4KB) / send_timeout 必须是一个合适的消息流出速度,否则挂起的进程将永远无法在超时前恢复。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • send_timeout_close
          类型Boolean
          默认值true
          描述

          如果发送超时,则关闭连接。

        • recbuf
          类型Bytesize
          描述

          连接的 TCP 接收缓冲区(OS 内核)。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

        • sndbuf
          类型Bytesize
          描述

          连接的 TCP 发送缓冲区(OS 内核)。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

        • buffer
          类型Bytesize
          默认值"4KB"
          描述

          驱动程序使用的用户空间缓冲区的大小。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

        • high_watermark
          类型Bytesize
          默认值"1MB"
          描述

          当 EMQX 尝试发送的数据多于操作系统为套接字分配的发送缓冲区的空间时,剩余数据将被暂储在 Erlang 的内部缓冲区中,然后在后台发送。
          如果该内部缓冲区中排队的数据量超过了 high_watermark,对应的套接字就会被标记为繁忙。
          繁忙期间向此套接字发送数据的进程将被挂起,直到套接字解除繁忙或挂起时间超过 send_timeout
          套接字只有在内部缓冲区中的数据低于低水位线时才会解除繁忙。
          进程挂起期间,进程的消息队列可能发生堆积,详见 max_mailbox_len
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

        • nodelay
          类型Boolean
          默认值true
          描述

          连接的 TCP_NODELAY 标识

        • reuseaddr
          类型Boolean
          默认值true
          描述

          连接的 SO_REUSEADDR 标识。

        • keepalive
          类型String
          默认值none
          描述

          为 MQTT 连接在 TCP 或 SSL 上启用 TCP 保活。 值是以逗号分隔的三个数字,格式为 'Idle,Interval,Probes'

          • Idle: 在服务器开始发送保活探测之前,连接需要处于空闲状态的秒数(Linux 默认为 7200)。
          • Interval: TCP 保活探测间隔的秒数(Linux 默认值为 75)。
          • Probes: 在放弃并终止连接之前,从另一端未获得响应时要发送的 TCP 保活探测的最大数量(Linux 默认值为 9 次)。 例如 "240,30,5" 表示:在连接空闲 240 秒后发送 TCP 保活探测,每隔 30 秒发送一次,直到收到响应,如果连续丢失 5 个响应,连接应该被关闭。 默认值为 'none'
    • ssl

      类型Map($name->OneOf(Struct(mqtt_ssl_listener),String("marked_for_deletion")))
      描述

      SSL 监听器。

      mqtt_ssl_listener

      • enable

        别名enabled
        类型Boolean
        默认值true
        描述

        启停监听器。

      • bind

        类型String
        默认值8883
        描述

        监听套接字的 IP 地址和端口。

      • acceptors

        类型Integer(1..+inf)
        默认值16
        描述

        监听器接收池的大小。

      • max_connections

        类型OneOf(String("infinity"),Integer(1..+inf))
        默认值infinity
        描述

        监听器允许的最大并发连接数。

      • mountpoint

        类型String
        默认值""
        描述

        发布或订阅时,请在所有主题前面加上 mountpoint 字符串。

        将消息传递给订阅者时,将从主题名称中删除带前缀的字符串。挂载点是一种用户可以用来实现不同侦听器之间消息路由隔离的方法。

        例如,如果客户机 A 使用 listeners.tcp.<name>.mountpoint 设置为'some_tenant',那么客户端实际上订阅了主题'some_tenant/t'。
        类似地,如果另一个客户端 B(与客户端 A 连接到同一个侦听器)向主题 't' 发送消息,该消息将路由到所有订阅了'some_租户/t'的客户端,因此客户端 A 将接收主题名为't'的消息

        设置为"" 以禁用该功能

        mountpoint 字符串中的变量:

        • ${clientid}: clientid
        • ${username}: username
      • zone

        类型String
        默认值default
        描述

        监听器所属的配置 zone。 连接到此监听器的客户端将继承在此 zone 名称下创建的 zone 设置。

        一个 zone 可以覆盖以下根名称下的配置:

        • mqtt
        • force_shutdown
        • force_gc
        • flapping_detect
        • durable_sessions
      • enable_authn

        类型Enum(true,false,quick_deny_anonymous)
        默认值true
        描述

        配置为 true 时将对启用客户端身份认证,只有通过认证的客户端才会被允许接入。
        配置为 false 时,将不对客户端做任何身份检查,任何客户端都可以直接接入。
        配置为 quick_deny_anonymous 时,EMQX 将直接拒绝未指定用户名的匿名客户端,不会对这些客户端进行任何身份检查,其余行为同 true

      • max_conn_rate

        类型String
        默认值infinity
        描述

        用于限制当前监听器接受连接的速率。一旦达到限制,EMQX 将暂停从 Accept 队列获取连接,从而推迟或拒绝新的连接。
        例如:

        • 1000/s:每秒只接受 1000 个连接。
        • 1000/10s:每 10 秒只接受 1000 个连接。
      • messages_rate

        类型String
        描述

        用于限制单个客户端每秒可以向 EMQX 发送的消息数。一旦达到限制,EMQX 将暂停从接收缓冲区读取数据,从而使发送方减速甚至暂时挂起。
        例如:

        • 500/s:每秒只接收 500 条消息,剩余的消息消息将被推迟。
        • 500/10s:每 10 秒只接收 500 条消息,剩余的消息消息将被推迟。
      • bytes_rate

        类型String
        描述

        用于限制单个客户端每秒可以向 EMQX 发送的字节数。一旦达到限制,EMQX 将暂停从接收缓冲区读取数据,从而使发送方减速甚至暂时挂起。
        字节的单位可以是:KB、MB、GB。
        例如:

        • 500KB/s:每秒只接受 500 千字节,剩余的字节将被推迟。。
        • 500MB/10s:每 10 秒只接收 500 兆字节,剩余的字节将被推迟。
      • access_rules

        类型Array(String)
        默认值["allow all"]
        描述

        由字符串规则组成的访问规则列表,以限制或允许某些地址的访问,规则之间存在前后顺序,格式为 allow | deny <address> | <CIDR> | all
        例如:
        ["deny 192.168.1.1", "allow 192.168.1.0/24", "deny, all"]

      • proxy_protocol

        类型Boolean
        默认值false
        描述

        如果为 EMQX 部署了反向代理,且代理处启用了 PROXY 协议以传递客户端真实 IP 时,则需要一并开启此选项,以便 EMQX 从 PROXY 协议标头中提取客户端真实 IP。EMQX 将自动检测 PROXY 协议的版本,支持 V1 和 V2。
        PROXY 协议的详细说明,请参考:https://www.haproxy.com/blog/haproxy/proxy-protocol/。

      • proxy_protocol_timeout

        类型Duration
        默认值"3s"
        描述

        代理协议超时。如果在超时时间内未收到代理协议数据包,EMQX 将关闭 TCP 连接。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • tcp_options

        类型Struct(tcp_opts)

        tcp_opts

        • active_n
          类型Integer(0..+inf)
          默认值100
          描述

          为此套接字指定{active,N}选项
          See: https://erlang.org/doc/man/inet.html#setopts-2

        • backlog
          类型Integer(1..+inf)
          默认值1024
          描述

          TCP backlog 定义了挂起连接队列可以增长到的最大长度。

        • send_timeout
          类型Duration
          默认值"15s"
          描述

          进程因向繁忙的套接字发送数据而挂起的最长时间,超时后将关闭此 TCP 连接与进程。
          进程解除挂起需要套接字解除繁忙状态,即堆积在 Erlang 内部缓冲区中的数据从高位水线(由 high_watermark 指定)降至低水位线(默认为 4KB)。
          因此 (high_watermark - 4KB) / send_timeout 必须是一个合适的消息流出速度,否则挂起的进程将永远无法在超时前恢复。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • send_timeout_close
          类型Boolean
          默认值true
          描述

          如果发送超时,则关闭连接。

        • recbuf
          类型Bytesize
          描述

          连接的 TCP 接收缓冲区(OS 内核)。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

        • sndbuf
          类型Bytesize
          描述

          连接的 TCP 发送缓冲区(OS 内核)。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

        • buffer
          类型Bytesize
          默认值"4KB"
          描述

          驱动程序使用的用户空间缓冲区的大小。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

        • high_watermark
          类型Bytesize
          默认值"1MB"
          描述

          当 EMQX 尝试发送的数据多于操作系统为套接字分配的发送缓冲区的空间时,剩余数据将被暂储在 Erlang 的内部缓冲区中,然后在后台发送。
          如果该内部缓冲区中排队的数据量超过了 high_watermark,对应的套接字就会被标记为繁忙。
          繁忙期间向此套接字发送数据的进程将被挂起,直到套接字解除繁忙或挂起时间超过 send_timeout
          套接字只有在内部缓冲区中的数据低于低水位线时才会解除繁忙。
          进程挂起期间,进程的消息队列可能发生堆积,详见 max_mailbox_len
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

        • nodelay
          类型Boolean
          默认值true
          描述

          连接的 TCP_NODELAY 标识

        • reuseaddr
          类型Boolean
          默认值true
          描述

          连接的 SO_REUSEADDR 标识。

        • keepalive
          类型String
          默认值none
          描述

          为 MQTT 连接在 TCP 或 SSL 上启用 TCP 保活。 值是以逗号分隔的三个数字,格式为 'Idle,Interval,Probes'

          • Idle: 在服务器开始发送保活探测之前,连接需要处于空闲状态的秒数(Linux 默认为 7200)。
          • Interval: TCP 保活探测间隔的秒数(Linux 默认值为 75)。
          • Probes: 在放弃并终止连接之前,从另一端未获得响应时要发送的 TCP 保活探测的最大数量(Linux 默认值为 9 次)。 例如 "240,30,5" 表示:在连接空闲 240 秒后发送 TCP 保活探测,每隔 30 秒发送一次,直到收到响应,如果连续丢失 5 个响应,连接应该被关闭。 默认值为 'none'
      • ssl_options

        类型Struct(listener_ssl_opts)

        listener_ssl_opts

        • cacertfile
          类型String
          默认值"${EMQX_ETC_DIR}/certs/cacert.pem"
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          默认值"${EMQX_ETC_DIR}/certs/cert.pem"
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          默认值"${EMQX_ETC_DIR}/certs/key.pem"
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • dhfile
          类型String
          描述

          如果协商使用 Diffie-Hellman 密钥交换的密码套件,则服务器将使用包含 PEM 编码的 Diffie-Hellman 参数的文件的路径。如果未指定,则使用默认参数。
          注意:TLS 1.3 不支持dhfile选项。

        • fail_if_no_peer_cert
          类型Boolean
          默认值false
          描述

          此选项仅在 verify 设置为 verify_peer 时有效。 如果设置为 true,那么 EMQX 将在客户端未能提供证书时拒绝该连接。 如果设置为 false,则 EMQX 将接受未提供证书的客户端。

        • honor_cipher_order
          类型Boolean
          默认值true
          描述

          一个重要的安全设置如果启用此设置,服务器将从客户端支持的密码套件列表中优先选择它最偏好的密码套件(由 ciphers 指定,偏好程度从左至右依次降低),从而忽略客户端的首选项。使用服务器的首选项通常更好,因为更有可能正确配置服务器。

        • client_renegotiation
          类型Boolean
          默认值true
          描述

          在支持客户机发起的重新协商的协议中,这种操作的资源成本对于服务器来说高于客户机。 这可能会成为拒绝服务攻击的载体。 SSL 应用程序已经采取措施来反击此类尝试,但通过将此选项设置为 false,可以严格禁用客户端发起的重新协商。 默认值为 true。请注意,由于基础密码套件可以加密的消息数量有限,禁用重新协商可能会导致长期连接变得不可用。

        • handshake_timeout
          类型Duration
          默认值"15s"
          描述

          握手完成所允许的最长时间
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • gc_after_handshake
          类型Boolean
          默认值false
          描述

          内存使用调优。如果启用,将在 TLS/SSL 握手完成后立即执行垃圾回收。TLS/SSL 握手建立后立即进行 GC。

        • ocsp
          类型Struct(ocsp)

          ocsp

          • enable_ocsp_stapling
            类型Boolean
            默认值false
            描述

            是否为监听器启用 OCSP Stapling 功能。 如果设置为 true,需要定义 OCSP Responder 的 URL 和证书签发者的 PEM 文件路径。

          • responder_url
            类型String
            描述

            用于检查服务器证书的 OCSP Responder 的 URL。

          • issuer_pem
            类型String
            描述

            服务器证书的 OCSP 签发者的 PEM 编码证书。

          • refresh_interval
            类型Duration
            默认值"5m"
            描述

            为服务器刷新 OCSP 响应的周期。
            表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
            例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
            Duration 等价于 Duration(ms)。单位部分不区分大小写。

          • refresh_http_timeout
            类型Duration
            默认值"15s"
            描述

            检查 OCSP 响应时,HTTP 请求的超时。
            表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
            例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
            Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable_crl_check
          类型Boolean
          默认值false
          描述

          是否为该监听器启用 CRL 检查。

    • ws

      类型Map($name->OneOf(Struct(mqtt_ws_listener),String("marked_for_deletion")))
      描述

      HTTP websocket 监听器。

      mqtt_ws_listener

      • enable

        别名enabled
        类型Boolean
        默认值true
        描述

        启停监听器。

      • bind

        类型String
        默认值8083
        描述

        监听套接字的 IP 地址和端口。

      • acceptors

        类型Integer(1..+inf)
        默认值16
        描述

        监听器接收池的大小。

      • max_connections

        类型OneOf(String("infinity"),Integer(1..+inf))
        默认值infinity
        描述

        监听器允许的最大并发连接数。

      • mountpoint

        类型String
        默认值""
        描述

        发布或订阅时,请在所有主题前面加上 mountpoint 字符串。

        将消息传递给订阅者时,将从主题名称中删除带前缀的字符串。挂载点是一种用户可以用来实现不同侦听器之间消息路由隔离的方法。

        例如,如果客户机 A 使用 listeners.tcp.<name>.mountpoint 设置为'some_tenant',那么客户端实际上订阅了主题'some_tenant/t'。
        类似地,如果另一个客户端 B(与客户端 A 连接到同一个侦听器)向主题 't' 发送消息,该消息将路由到所有订阅了'some_租户/t'的客户端,因此客户端 A 将接收主题名为't'的消息

        设置为"" 以禁用该功能

        mountpoint 字符串中的变量:

        • ${clientid}: clientid
        • ${username}: username
      • zone

        类型String
        默认值default
        描述

        监听器所属的配置 zone。 连接到此监听器的客户端将继承在此 zone 名称下创建的 zone 设置。

        一个 zone 可以覆盖以下根名称下的配置:

        • mqtt
        • force_shutdown
        • force_gc
        • flapping_detect
        • durable_sessions
      • enable_authn

        类型Enum(true,false,quick_deny_anonymous)
        默认值true
        描述

        配置为 true 时将对启用客户端身份认证,只有通过认证的客户端才会被允许接入。
        配置为 false 时,将不对客户端做任何身份检查,任何客户端都可以直接接入。
        配置为 quick_deny_anonymous 时,EMQX 将直接拒绝未指定用户名的匿名客户端,不会对这些客户端进行任何身份检查,其余行为同 true

      • max_conn_rate

        类型String
        默认值infinity
        描述

        用于限制当前监听器接受连接的速率。一旦达到限制,EMQX 将暂停从 Accept 队列获取连接,从而推迟或拒绝新的连接。
        例如:

        • 1000/s:每秒只接受 1000 个连接。
        • 1000/10s:每 10 秒只接受 1000 个连接。
      • messages_rate

        类型String
        描述

        用于限制单个客户端每秒可以向 EMQX 发送的消息数。一旦达到限制,EMQX 将暂停从接收缓冲区读取数据,从而使发送方减速甚至暂时挂起。
        例如:

        • 500/s:每秒只接收 500 条消息,剩余的消息消息将被推迟。
        • 500/10s:每 10 秒只接收 500 条消息,剩余的消息消息将被推迟。
      • bytes_rate

        类型String
        描述

        用于限制单个客户端每秒可以向 EMQX 发送的字节数。一旦达到限制,EMQX 将暂停从接收缓冲区读取数据,从而使发送方减速甚至暂时挂起。
        字节的单位可以是:KB、MB、GB。
        例如:

        • 500KB/s:每秒只接受 500 千字节,剩余的字节将被推迟。。
        • 500MB/10s:每 10 秒只接收 500 兆字节,剩余的字节将被推迟。
      • access_rules

        类型Array(String)
        默认值["allow all"]
        描述

        由字符串规则组成的访问规则列表,以限制或允许某些地址的访问,规则之间存在前后顺序,格式为 allow | deny <address> | <CIDR> | all
        例如:
        ["deny 192.168.1.1", "allow 192.168.1.0/24", "deny, all"]

      • proxy_protocol

        类型Boolean
        默认值false
        描述

        如果为 EMQX 部署了反向代理,且代理处启用了 PROXY 协议以传递客户端真实 IP 时,则需要一并开启此选项,以便 EMQX 从 PROXY 协议标头中提取客户端真实 IP。EMQX 将自动检测 PROXY 协议的版本,支持 V1 和 V2。
        PROXY 协议的详细说明,请参考:https://www.haproxy.com/blog/haproxy/proxy-protocol/。

      • proxy_protocol_timeout

        类型Duration
        默认值"3s"
        描述

        代理协议超时。如果在超时时间内未收到代理协议数据包,EMQX 将关闭 TCP 连接。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • tcp_options

        类型Struct(tcp_opts)

        tcp_opts

        • active_n
          类型Integer(0..+inf)
          默认值100
          描述

          为此套接字指定{active,N}选项
          See: https://erlang.org/doc/man/inet.html#setopts-2

        • backlog
          类型Integer(1..+inf)
          默认值1024
          描述

          TCP backlog 定义了挂起连接队列可以增长到的最大长度。

        • send_timeout
          类型Duration
          默认值"15s"
          描述

          进程因向繁忙的套接字发送数据而挂起的最长时间,超时后将关闭此 TCP 连接与进程。
          进程解除挂起需要套接字解除繁忙状态,即堆积在 Erlang 内部缓冲区中的数据从高位水线(由 high_watermark 指定)降至低水位线(默认为 4KB)。
          因此 (high_watermark - 4KB) / send_timeout 必须是一个合适的消息流出速度,否则挂起的进程将永远无法在超时前恢复。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • send_timeout_close
          类型Boolean
          默认值true
          描述

          如果发送超时,则关闭连接。

        • recbuf
          类型Bytesize
          描述

          连接的 TCP 接收缓冲区(OS 内核)。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

        • sndbuf
          类型Bytesize
          描述

          连接的 TCP 发送缓冲区(OS 内核)。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

        • buffer
          类型Bytesize
          默认值"4KB"
          描述

          驱动程序使用的用户空间缓冲区的大小。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

        • high_watermark
          类型Bytesize
          默认值"1MB"
          描述

          当 EMQX 尝试发送的数据多于操作系统为套接字分配的发送缓冲区的空间时,剩余数据将被暂储在 Erlang 的内部缓冲区中,然后在后台发送。
          如果该内部缓冲区中排队的数据量超过了 high_watermark,对应的套接字就会被标记为繁忙。
          繁忙期间向此套接字发送数据的进程将被挂起,直到套接字解除繁忙或挂起时间超过 send_timeout
          套接字只有在内部缓冲区中的数据低于低水位线时才会解除繁忙。
          进程挂起期间,进程的消息队列可能发生堆积,详见 max_mailbox_len
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

        • nodelay
          类型Boolean
          默认值true
          描述

          连接的 TCP_NODELAY 标识

        • reuseaddr
          类型Boolean
          默认值true
          描述

          连接的 SO_REUSEADDR 标识。

        • keepalive
          类型String
          默认值none
          描述

          为 MQTT 连接在 TCP 或 SSL 上启用 TCP 保活。 值是以逗号分隔的三个数字,格式为 'Idle,Interval,Probes'

          • Idle: 在服务器开始发送保活探测之前,连接需要处于空闲状态的秒数(Linux 默认为 7200)。
          • Interval: TCP 保活探测间隔的秒数(Linux 默认值为 75)。
          • Probes: 在放弃并终止连接之前,从另一端未获得响应时要发送的 TCP 保活探测的最大数量(Linux 默认值为 9 次)。 例如 "240,30,5" 表示:在连接空闲 240 秒后发送 TCP 保活探测,每隔 30 秒发送一次,直到收到响应,如果连续丢失 5 个响应,连接应该被关闭。 默认值为 'none'
      • websocket

        类型Struct(ws_opts)

        ws_opts

        • mqtt_path
          类型String
          默认值"/mqtt"
          描述

          MQTT over WebSocket 服务的 URL 的路径部分。默认为 mqtt,所以 EMQX 默认的 WebSocket 地址为: ws://{host}:{port}/mqtt

        • mqtt_piggyback
          类型Enum(single,multiple)
          默认值multiple
          描述

          WebSocket 消息是否允许包含多个 MQTT 数据包。

        • compress
          类型Boolean
          默认值false
          描述

          如果设置为 true,则使用 zlib 压缩 WebSocket 消息。
          可以使用deflate_opts 设置更详细的压缩参数。

        • idle_timeout
          类型Duration
          默认值"7200s"
          描述

          等待 WebSocket 升级请求的超时时间,超时后连接将被关闭。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • max_frame_size
          类型OneOf(String("infinity"),Integer(1..+inf))
          默认值infinity
          描述

          单个 MQTT 数据包的最大长度。

        • fail_if_no_subprotocol
          类型Boolean
          默认值true
          描述

          如果true,当客户端未携带Sec WebSocket Protocol字段时,服务器将返回一个错误。
          注意:微信小程序需要禁用此验证。

        • supported_subprotocols
          类型String
          默认值"mqtt, mqtt-v3, mqtt-v3.1.1, mqtt-v5"
          描述

          逗号分隔的 subprotocols 支持列表。

        • check_origin_enable
          类型Boolean
          默认值false
          描述

          如果trueoriginHTTP 头将根据check_origins参数中配置的允许来源列表进行验证。

        • allow_origin_absence
          类型Boolean
          默认值true
          描述

          如果设置为 false 并且 check_origin_enabletrue,服务器将拒绝没有 origin HTTP 头的请求。

        • check_origins
          类型String
          默认值"http://localhost:18083, http://127.0.0.1:18083"
          描述

          允许的 origins 列表

        • proxy_address_header
          类型String
          默认值"x-forwarded-for"
          描述

          HTTP 头,用于传递有关客户端 IP 地址的信息。 当 EMQX 集群部署在负载平衡器后面时,这一点非常重要。

        • proxy_port_header
          类型String
          默认值"x-forwarded-port"
          描述

          HTTP 头,用于传递有关客户端端口的信息。当 EMQX 集群部署在负载平衡器后面时,这一点非常重要。

        • deflate_opts
          类型Struct(deflate_opts)

          deflate_opts

          • level
            类型Enum(none,default,best_compression,best_speed)
            描述

            压缩级别

          • mem_level
            类型Integer(1..9)
            默认值8
            描述

            指定压缩状态的大小
            较低的值会减少每个连接的内存使用。

          • strategy
            类型Enum(default,filtered,huffman_only,rle)
            默认值default
            描述

            指定压缩策略。

          • server_context_takeover
            类型Enum(takeover,no_takeover)
            默认值takeover
            描述

            接管意味着在服务器消息之间保留压缩状态。

          • client_context_takeover
            类型Enum(takeover,no_takeover)
            默认值takeover
            描述

            接管意味着在客户端消息之间保留压缩状态。

          • server_max_window_bits
            类型Integer(8..15)
            默认值15
            描述

            指定服务器压缩上下文的大小。

          • client_max_window_bits
            类型Integer(8..15)
            默认值15
            描述

            指定客户端压缩上下文的大小。

        • validate_utf8
          类型Boolean
          默认值true
          描述

          是否验证 text 和 close 帧的有效负载是否为有效的 UTF-8,禁用它可以节省资源提高性能。

    • wss

      类型Map($name->OneOf(Struct(mqtt_wss_listener),String("marked_for_deletion")))
      描述

      HTTPS websocket 监听器。

      mqtt_wss_listener

      • enable

        别名enabled
        类型Boolean
        默认值true
        描述

        启停监听器。

      • bind

        类型String
        默认值8084
        描述

        监听套接字的 IP 地址和端口。

      • acceptors

        类型Integer(1..+inf)
        默认值16
        描述

        监听器接收池的大小。

      • max_connections

        类型OneOf(String("infinity"),Integer(1..+inf))
        默认值infinity
        描述

        监听器允许的最大并发连接数。

      • mountpoint

        类型String
        默认值""
        描述

        发布或订阅时,请在所有主题前面加上 mountpoint 字符串。

        将消息传递给订阅者时,将从主题名称中删除带前缀的字符串。挂载点是一种用户可以用来实现不同侦听器之间消息路由隔离的方法。

        例如,如果客户机 A 使用 listeners.tcp.<name>.mountpoint 设置为'some_tenant',那么客户端实际上订阅了主题'some_tenant/t'。
        类似地,如果另一个客户端 B(与客户端 A 连接到同一个侦听器)向主题 't' 发送消息,该消息将路由到所有订阅了'some_租户/t'的客户端,因此客户端 A 将接收主题名为't'的消息

        设置为"" 以禁用该功能

        mountpoint 字符串中的变量:

        • ${clientid}: clientid
        • ${username}: username
      • zone

        类型String
        默认值default
        描述

        监听器所属的配置 zone。 连接到此监听器的客户端将继承在此 zone 名称下创建的 zone 设置。

        一个 zone 可以覆盖以下根名称下的配置:

        • mqtt
        • force_shutdown
        • force_gc
        • flapping_detect
        • durable_sessions
      • enable_authn

        类型Enum(true,false,quick_deny_anonymous)
        默认值true
        描述

        配置为 true 时将对启用客户端身份认证,只有通过认证的客户端才会被允许接入。
        配置为 false 时,将不对客户端做任何身份检查,任何客户端都可以直接接入。
        配置为 quick_deny_anonymous 时,EMQX 将直接拒绝未指定用户名的匿名客户端,不会对这些客户端进行任何身份检查,其余行为同 true

      • max_conn_rate

        类型String
        默认值infinity
        描述

        用于限制当前监听器接受连接的速率。一旦达到限制,EMQX 将暂停从 Accept 队列获取连接,从而推迟或拒绝新的连接。
        例如:

        • 1000/s:每秒只接受 1000 个连接。
        • 1000/10s:每 10 秒只接受 1000 个连接。
      • messages_rate

        类型String
        描述

        用于限制单个客户端每秒可以向 EMQX 发送的消息数。一旦达到限制,EMQX 将暂停从接收缓冲区读取数据,从而使发送方减速甚至暂时挂起。
        例如:

        • 500/s:每秒只接收 500 条消息,剩余的消息消息将被推迟。
        • 500/10s:每 10 秒只接收 500 条消息,剩余的消息消息将被推迟。
      • bytes_rate

        类型String
        描述

        用于限制单个客户端每秒可以向 EMQX 发送的字节数。一旦达到限制,EMQX 将暂停从接收缓冲区读取数据,从而使发送方减速甚至暂时挂起。
        字节的单位可以是:KB、MB、GB。
        例如:

        • 500KB/s:每秒只接受 500 千字节,剩余的字节将被推迟。。
        • 500MB/10s:每 10 秒只接收 500 兆字节,剩余的字节将被推迟。
      • access_rules

        类型Array(String)
        默认值["allow all"]
        描述

        由字符串规则组成的访问规则列表,以限制或允许某些地址的访问,规则之间存在前后顺序,格式为 allow | deny <address> | <CIDR> | all
        例如:
        ["deny 192.168.1.1", "allow 192.168.1.0/24", "deny, all"]

      • proxy_protocol

        类型Boolean
        默认值false
        描述

        如果为 EMQX 部署了反向代理,且代理处启用了 PROXY 协议以传递客户端真实 IP 时,则需要一并开启此选项,以便 EMQX 从 PROXY 协议标头中提取客户端真实 IP。EMQX 将自动检测 PROXY 协议的版本,支持 V1 和 V2。
        PROXY 协议的详细说明,请参考:https://www.haproxy.com/blog/haproxy/proxy-protocol/。

      • proxy_protocol_timeout

        类型Duration
        默认值"3s"
        描述

        代理协议超时。如果在超时时间内未收到代理协议数据包,EMQX 将关闭 TCP 连接。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • tcp_options

        类型Struct(tcp_opts)

        tcp_opts

        • active_n
          类型Integer(0..+inf)
          默认值100
          描述

          为此套接字指定{active,N}选项
          See: https://erlang.org/doc/man/inet.html#setopts-2

        • backlog
          类型Integer(1..+inf)
          默认值1024
          描述

          TCP backlog 定义了挂起连接队列可以增长到的最大长度。

        • send_timeout
          类型Duration
          默认值"15s"
          描述

          进程因向繁忙的套接字发送数据而挂起的最长时间,超时后将关闭此 TCP 连接与进程。
          进程解除挂起需要套接字解除繁忙状态,即堆积在 Erlang 内部缓冲区中的数据从高位水线(由 high_watermark 指定)降至低水位线(默认为 4KB)。
          因此 (high_watermark - 4KB) / send_timeout 必须是一个合适的消息流出速度,否则挂起的进程将永远无法在超时前恢复。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • send_timeout_close
          类型Boolean
          默认值true
          描述

          如果发送超时,则关闭连接。

        • recbuf
          类型Bytesize
          描述

          连接的 TCP 接收缓冲区(OS 内核)。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

        • sndbuf
          类型Bytesize
          描述

          连接的 TCP 发送缓冲区(OS 内核)。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

        • buffer
          类型Bytesize
          默认值"4KB"
          描述

          驱动程序使用的用户空间缓冲区的大小。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

        • high_watermark
          类型Bytesize
          默认值"1MB"
          描述

          当 EMQX 尝试发送的数据多于操作系统为套接字分配的发送缓冲区的空间时,剩余数据将被暂储在 Erlang 的内部缓冲区中,然后在后台发送。
          如果该内部缓冲区中排队的数据量超过了 high_watermark,对应的套接字就会被标记为繁忙。
          繁忙期间向此套接字发送数据的进程将被挂起,直到套接字解除繁忙或挂起时间超过 send_timeout
          套接字只有在内部缓冲区中的数据低于低水位线时才会解除繁忙。
          进程挂起期间,进程的消息队列可能发生堆积,详见 max_mailbox_len
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

        • nodelay
          类型Boolean
          默认值true
          描述

          连接的 TCP_NODELAY 标识

        • reuseaddr
          类型Boolean
          默认值true
          描述

          连接的 SO_REUSEADDR 标识。

        • keepalive
          类型String
          默认值none
          描述

          为 MQTT 连接在 TCP 或 SSL 上启用 TCP 保活。 值是以逗号分隔的三个数字,格式为 'Idle,Interval,Probes'

          • Idle: 在服务器开始发送保活探测之前,连接需要处于空闲状态的秒数(Linux 默认为 7200)。
          • Interval: TCP 保活探测间隔的秒数(Linux 默认值为 75)。
          • Probes: 在放弃并终止连接之前,从另一端未获得响应时要发送的 TCP 保活探测的最大数量(Linux 默认值为 9 次)。 例如 "240,30,5" 表示:在连接空闲 240 秒后发送 TCP 保活探测,每隔 30 秒发送一次,直到收到响应,如果连续丢失 5 个响应,连接应该被关闭。 默认值为 'none'
      • ssl_options

        类型Struct(listener_wss_opts)

        listener_wss_opts

        • cacertfile
          类型String
          默认值"${EMQX_ETC_DIR}/certs/cacert.pem"
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          默认值"${EMQX_ETC_DIR}/certs/cert.pem"
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          默认值"${EMQX_ETC_DIR}/certs/key.pem"
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • dhfile
          类型String
          描述

          如果协商使用 Diffie-Hellman 密钥交换的密码套件,则服务器将使用包含 PEM 编码的 Diffie-Hellman 参数的文件的路径。如果未指定,则使用默认参数。
          注意:TLS 1.3 不支持dhfile选项。

        • fail_if_no_peer_cert
          类型Boolean
          默认值false
          描述

          此选项仅在 verify 设置为 verify_peer 时有效。 如果设置为 true,那么 EMQX 将在客户端未能提供证书时拒绝该连接。 如果设置为 false,则 EMQX 将接受未提供证书的客户端。

        • honor_cipher_order
          类型Boolean
          默认值true
          描述

          一个重要的安全设置如果启用此设置,服务器将从客户端支持的密码套件列表中优先选择它最偏好的密码套件(由 ciphers 指定,偏好程度从左至右依次降低),从而忽略客户端的首选项。使用服务器的首选项通常更好,因为更有可能正确配置服务器。

        • client_renegotiation
          类型Boolean
          默认值true
          描述

          在支持客户机发起的重新协商的协议中,这种操作的资源成本对于服务器来说高于客户机。 这可能会成为拒绝服务攻击的载体。 SSL 应用程序已经采取措施来反击此类尝试,但通过将此选项设置为 false,可以严格禁用客户端发起的重新协商。 默认值为 true。请注意,由于基础密码套件可以加密的消息数量有限,禁用重新协商可能会导致长期连接变得不可用。

        • handshake_timeout
          类型Duration
          默认值"15s"
          描述

          握手完成所允许的最长时间
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • websocket

        类型Struct(ws_opts)

        ws_opts

        • mqtt_path
          类型String
          默认值"/mqtt"
          描述

          MQTT over WebSocket 服务的 URL 的路径部分。默认为 mqtt,所以 EMQX 默认的 WebSocket 地址为: ws://{host}:{port}/mqtt

        • mqtt_piggyback
          类型Enum(single,multiple)
          默认值multiple
          描述

          WebSocket 消息是否允许包含多个 MQTT 数据包。

        • compress
          类型Boolean
          默认值false
          描述

          如果设置为 true,则使用 zlib 压缩 WebSocket 消息。
          可以使用deflate_opts 设置更详细的压缩参数。

        • idle_timeout
          类型Duration
          默认值"7200s"
          描述

          等待 WebSocket 升级请求的超时时间,超时后连接将被关闭。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • max_frame_size
          类型OneOf(String("infinity"),Integer(1..+inf))
          默认值infinity
          描述

          单个 MQTT 数据包的最大长度。

        • fail_if_no_subprotocol
          类型Boolean
          默认值true
          描述

          如果true,当客户端未携带Sec WebSocket Protocol字段时,服务器将返回一个错误。
          注意:微信小程序需要禁用此验证。

        • supported_subprotocols
          类型String
          默认值"mqtt, mqtt-v3, mqtt-v3.1.1, mqtt-v5"
          描述

          逗号分隔的 subprotocols 支持列表。

        • check_origin_enable
          类型Boolean
          默认值false
          描述

          如果trueoriginHTTP 头将根据check_origins参数中配置的允许来源列表进行验证。

        • allow_origin_absence
          类型Boolean
          默认值true
          描述

          如果设置为 false 并且 check_origin_enabletrue,服务器将拒绝没有 origin HTTP 头的请求。

        • check_origins
          类型String
          默认值"http://localhost:18083, http://127.0.0.1:18083"
          描述

          允许的 origins 列表

        • proxy_address_header
          类型String
          默认值"x-forwarded-for"
          描述

          HTTP 头,用于传递有关客户端 IP 地址的信息。 当 EMQX 集群部署在负载平衡器后面时,这一点非常重要。

        • proxy_port_header
          类型String
          默认值"x-forwarded-port"
          描述

          HTTP 头,用于传递有关客户端端口的信息。当 EMQX 集群部署在负载平衡器后面时,这一点非常重要。

        • deflate_opts
          类型Struct(deflate_opts)

          deflate_opts

          • level
            类型Enum(none,default,best_compression,best_speed)
            描述

            压缩级别

          • mem_level
            类型Integer(1..9)
            默认值8
            描述

            指定压缩状态的大小
            较低的值会减少每个连接的内存使用。

          • strategy
            类型Enum(default,filtered,huffman_only,rle)
            默认值default
            描述

            指定压缩策略。

          • server_context_takeover
            类型Enum(takeover,no_takeover)
            默认值takeover
            描述

            接管意味着在服务器消息之间保留压缩状态。

          • client_context_takeover
            类型Enum(takeover,no_takeover)
            默认值takeover
            描述

            接管意味着在客户端消息之间保留压缩状态。

          • server_max_window_bits
            类型Integer(8..15)
            默认值15
            描述

            指定服务器压缩上下文的大小。

          • client_max_window_bits
            类型Integer(8..15)
            默认值15
            描述

            指定客户端压缩上下文的大小。

        • validate_utf8
          类型Boolean
          默认值true
          描述

          是否验证 text 和 close 帧的有效负载是否为有效的 UTF-8,禁用它可以节省资源提高性能。

    • quic

      类型Map($name->OneOf(Struct(mqtt_quic_listener),String("marked_for_deletion")))
      描述

      QUIC 监听器。

      mqtt_quic_listener

      • ciphers

        类型Array(String)
        默认值[TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256, TLS_CHACHA20_POLY1305_SHA256]
        描述

        此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
        密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

        名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式。
        注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

        例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


        注:PSK 的 Ciphers 不支持 tlsv1.3。
        如果打算使用 PSK 密码套件,tlsv1.3 应在 ssl.versions 中禁用。
        PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"

        注:QUIC 监听器只支持 tlsv1.3 的 ciphers。

      • ssl_options

        类型Struct(listener_quic_ssl_opts)
        描述

        QUIC 传输层的 TLS 选项

        listener_quic_ssl_opts

        • cacertfile
          类型String
          默认值"${EMQX_ETC_DIR}/certs/cacert.pem"
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • certfile
          类型String
          默认值"${EMQX_ETC_DIR}/certs/cert.pem"
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          默认值"${EMQX_ETC_DIR}/certs/key.pem"
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

      • enable

        别名enabled
        类型Boolean
        默认值true
        描述

        启停监听器。

      • bind

        类型String
        默认值14567
        描述

        监听套接字的 IP 地址和端口。

      • acceptors

        类型Integer(1..+inf)
        默认值16
        描述

        监听器接收池的大小。

      • max_connections

        类型OneOf(String("infinity"),Integer(1..+inf))
        默认值infinity
        描述

        监听器允许的最大并发连接数。

      • mountpoint

        类型String
        默认值""
        描述

        发布或订阅时,请在所有主题前面加上 mountpoint 字符串。

        将消息传递给订阅者时,将从主题名称中删除带前缀的字符串。挂载点是一种用户可以用来实现不同侦听器之间消息路由隔离的方法。

        例如,如果客户机 A 使用 listeners.tcp.<name>.mountpoint 设置为'some_tenant',那么客户端实际上订阅了主题'some_tenant/t'。
        类似地,如果另一个客户端 B(与客户端 A 连接到同一个侦听器)向主题 't' 发送消息,该消息将路由到所有订阅了'some_租户/t'的客户端,因此客户端 A 将接收主题名为't'的消息

        设置为"" 以禁用该功能

        mountpoint 字符串中的变量:

        • ${clientid}: clientid
        • ${username}: username
      • zone

        类型String
        默认值default
        描述

        监听器所属的配置 zone。 连接到此监听器的客户端将继承在此 zone 名称下创建的 zone 设置。

        一个 zone 可以覆盖以下根名称下的配置:

        • mqtt
        • force_shutdown
        • force_gc
        • flapping_detect
        • durable_sessions
      • enable_authn

        类型Enum(true,false,quick_deny_anonymous)
        默认值true
        描述

        配置为 true 时将对启用客户端身份认证,只有通过认证的客户端才会被允许接入。
        配置为 false 时,将不对客户端做任何身份检查,任何客户端都可以直接接入。
        配置为 quick_deny_anonymous 时,EMQX 将直接拒绝未指定用户名的匿名客户端,不会对这些客户端进行任何身份检查,其余行为同 true

      • max_conn_rate

        类型String
        默认值infinity
        描述

        用于限制当前监听器接受连接的速率。一旦达到限制,EMQX 将暂停从 Accept 队列获取连接,从而推迟或拒绝新的连接。
        例如:

        • 1000/s:每秒只接受 1000 个连接。
        • 1000/10s:每 10 秒只接受 1000 个连接。
      • messages_rate

        类型String
        描述

        用于限制单个客户端每秒可以向 EMQX 发送的消息数。一旦达到限制,EMQX 将暂停从接收缓冲区读取数据,从而使发送方减速甚至暂时挂起。
        例如:

        • 500/s:每秒只接收 500 条消息,剩余的消息消息将被推迟。
        • 500/10s:每 10 秒只接收 500 条消息,剩余的消息消息将被推迟。
      • bytes_rate

        类型String
        描述

        用于限制单个客户端每秒可以向 EMQX 发送的字节数。一旦达到限制,EMQX 将暂停从接收缓冲区读取数据,从而使发送方减速甚至暂时挂起。
        字节的单位可以是:KB、MB、GB。
        例如:

        • 500KB/s:每秒只接受 500 千字节,剩余的字节将被推迟。。
        • 500MB/10s:每 10 秒只接收 500 兆字节,剩余的字节将被推迟。
  • mqtt

    类型Struct(mqtt)
    描述

    全局的 MQTT 配置项。 mqtt 下所有的配置作为全局的默认值存在,它可以被 zone 中的配置覆盖

    mqtt

    • idle_timeout

      类型OneOf(String("infinity"),Duration)
      默认值"15s"
      描述

      设置连接被断开或进入休眠状态前的等待时间,空闲超时后,

      • 如暂未收到客户端的 CONNECT 报文,连接将断开;
      • 如已收到客户端的 CONNECT 报文,连接将进入休眠模式以节省系统资源。

      注意:请合理设置该参数值,如等待时间设置过长,可能造成系统资源的浪费。

    • max_packet_size

      类型Bytesize
      默认值"1MB"
      描述

      允许的最大 MQTT 报文大小。
      表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

    • max_clientid_len

      类型Integer(23..65535)
      默认值65535
      描述

      允许的最大 MQTT Client ID 长度。

    • max_topic_levels

      类型Integer(1..65535)
      默认值128
      描述

      允许的最大主题层级。

    • max_topic_alias

      类型Integer(0..65535)
      默认值65535
      描述

      允许的最大主题别名数,0 表示不支持主题别名。

    • retain_available

      类型Boolean
      默认值true
      描述

      是否启用对 MQTT 保留消息的支持。

    • wildcard_subscription

      类型Boolean
      默认值true
      描述

      是否启用对 MQTT 通配符订阅的支持。

    • shared_subscription

      类型Boolean
      默认值true
      描述

      是否启用对 MQTT 共享订阅的支持。

    • shared_subscription_strategy

      类型Enum(random,round_robin,round_robin_per_group,sticky,local,hash_topic,hash_clientid)
      默认值round_robin
      描述

      共享订阅的分发策略。

      • random:随机选择一个订阅者进行分发;
      • round_robin:共享订阅组内的客户端将循环消费消息,循环进度独立记录在每个发布端中,所以前后两条来自 不同发布端 的消息可能被订阅组内的同一个客户端消费;
      • round_robin_per_group:共享订阅组内的客户端将循环消费消息,循环进度独立记录在每个节点中,所以前后两条来自 不同节点 的消息可能被订阅组内的同一个客户端消费;
      • local:随机选择当前节点上的一个订阅者,如果当前节点没有订阅者,则在集群内随机选择;
      • sticky:持续将消息分发给最初选择的订阅者,直到他们的会话结束;
      • hash_clientid:哈希发布者的客户端 ID 以选择订阅者;
      • hash_topic:哈希发布主题以选择订阅者。
    • exclusive_subscription

      类型Boolean
      默认值false
      描述

      是否启用对 MQTT 排它订阅的支持。

    • ignore_loop_deliver

      类型Boolean
      默认值false
      描述

      设置由 MQTT v3.1.1/v3.1.0 客户端发布的消息是否将转发给其本身;类似 MQTT 5.0 协议中的 No Local 选项。

    • strict_mode

      类型Boolean
      默认值false
      描述

      是否以严格模式解析 MQTT 消息。 严格模式下,如客户端 ID、主题名称等中包含无效 utf8 字符串,连接将被断开。

    • response_information

      类型String
      默认值""
      描述

      UTF-8 字符串,用于指定返回给客户端的响应主题,如 reqrsp/,此时请求和应答客户端都需要使用 reqrsp/ 前缀的主题来完成通讯。 如希望禁用此功能,请在下方的文字框中输入"";仅适用于 MQTT 5.0 客户端。

    • server_keepalive

      类型OneOf(Integer(1..+inf),String("disabled"))
      默认值disabled
      描述

      EMQX 要求的保活时间,如设为 disabled,则将使用客户端指定的保持连接时间;仅适用于 MQTT 5.0 客户端。

    • keepalive_multiplier

      类型Number
      默认值1.5
      描述

      EMQX 判定客户端 Keep Alive 超时使用的 Keep Alive 倍数。计算公式为:Keep Alive 超时 = Keep Alive 间隔 × Keep Alive 倍数。 默认值 1.5 遵循 MQTT 5.0 规范。此倍数可调整,为系统管理员提供根据特定需求进行定制的灵活性。例如,如果客户端的 10 秒保持连接间隔的 PINGREQ 因为额外的 10 秒延迟,将倍数更改为 2 可以让 EMQX 容忍此延迟。

    • keepalive_check_interval

      类型Duration
      默认值"30s"
      描述

      检查传入 MQTT 数据包的频率决定了服务器检查新 MQTT 数据包的频率。 如果一段时间内未从客户端收到任何数据包,则该时间会累积。 一旦累积时间超过 keepalive-interval * keepalive-multiplier,连接将被终止。 默认设置为 30 秒,最小值为 1 秒,最大值为 keepalive-interval / 2
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • retry_interval

      类型Duration
      默认值"30s"
      描述

      QoS 1/2 消息的重新投递间隔。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • use_username_as_clientid

      类型Boolean
      默认值false
      描述

      是否使用用户名作为客户端 ID。 此设置的作用时间晚于 对端证书作为用户名 (peer_cert_as_username)对端证书作为客户端 ID (peer_cert_as_clientid)

    • peer_cert_as_username

      类型Enum(disabled,cn,dn,crt,pem,md5)
      默认值disabled
      描述

      使用对端证书中的 CN、DN 字段或整个证书内容来作为用户名;仅适用于 TLS 连接。 目前支持:

      • cn: 取证书的 CN 字段
      • dn: 取证书的 DN 字段
      • crt: 取 DERPEM 的证书内容
      • pem: 将 DER 证书转换为 PEM 格式作为用户名
      • md5: 取 DERPEM 证书内容的 MD5 值
    • peer_cert_as_clientid

      类型Enum(disabled,cn,dn,crt,pem,md5)
      默认值disabled
      描述

      使用对端证书中的 CN、DN 字段或整个证书内容来作为客户端 ID。仅适用于 TLS 连接; 目前支持:

      • cn: 取证书的 CN 字段
      • dn: 取证书的 DN 字段
      • crt: 取 DERPEM 证书的内容
      • pem: 将 DER 证书内容转换为 PEM 格式作为客户端 ID
      • md5: 取 DERPEM 证书内容的 MD5 值
    • client_attrs_init

      类型Array(Struct(client_attrs_init))
      默认值[]
      描述

      指定如何初始化客户端属性。每个属性可被初始化为 client_attrs.{NAME} ,其中 {NAME} 是在配置字段 set_as_attr 中指定的属性名称。初始化的客户端属性将以指定的名称存储在 client_attrs 属性中。然后,它们可以在身份验证和授权过程的模板中用作占位符。例如,当 set_as_attr = alias 时,使用 ${client_attrs.alias} 来渲染 HTTP POST 请求体,或者渲染监听器配置 moutpoint = devices/${client_attrs.alias}/ 来初始化每个客户端独有的主题命名空间。

      client_attrs_init

      • expression

        类型String
        描述

        单行表达式,用于求值一组预定义的字符串函数(类似规则引擎 SQL 语句中的函数)。 表达式可以是带有嵌套调用的函数调用,或直接变量引用。 目前,它不提供用户定义的变量绑定(如 var a=1)或用户定义的函数。 例如,提取以点分隔的客户端 ID 的前缀:nth(1, tokens(clientid, '.'))

        预绑定的变量包括:

        • cn: 客户端 TLS 证书的常用名称。
        • dn: 客户端 TLS 证书的专有名称(主题)。
        • clientid: MQTT 客户端 ID。
        • username: MQTT 客户端的用户名。
        • user_property.{NAME}: CONNECT 包中的用户属性。

        您可以在 EMQX 文档中了解更多关于各种表达式的信息。

      • set_as_attr

        类型String
        描述

        从客户端数据中提取的客户端属性的名称。 提取的属性将以此名称存储在 client_attrs 属性中。

    • session_expiry_interval

      类型Duration
      默认值"2h"
      描述

      指定会话将在连接断开后多久过期,仅适用于非 MQTT 5.0 的连接。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • message_expiry_interval

      类型OneOf(Duration,String("infinity"))
      默认值infinity
      描述

      MQTT 消息的过期间隔。对于 MQTT 5.0 客户端,此配置仅在消息中未设置 Message-Expiry-Interval 属性时生效;否则,将使用 Message-Expiry-Interval 属性的值。对于 5.0 之前的 MQTT 版本,此配置将始终生效。请注意,将 message_expiry_interval 设置为大于 session_expiry_interval 是没有意义的,因为会话过期时所有消息将被清除。

    • max_awaiting_rel

      类型OneOf(Integer(0..+inf),String("infinity"))
      默认值100
      描述

      每个发布者的会话中,都存在一个队列来处理客户端发送的 QoS 2 消息。该队列会存储 QoS 2 消息的报文 ID 直到收到客户端的 PUBREL 或超时,达到队列长度的限制后,新的 QoS 2 消息发布会被拒绝,并返回 147(0x93) 错误。

    • max_qos_allowed

      类型Integer(0..2)
      默认值2
      描述

      允许的最大 QoS 等级。

    • mqueue_priorities

      类型OneOf(String("disabled"),Map)
      默认值disabled
      描述

      主题优先级列表。按主题划分消息队列中的消息的优先级,优先级的取值范围为 [1-255]。
      数值越大,优先级越高。高优先级的消息将被优先发送。
      不在此列表中的主题,均使用默认优先级(由 mqueue_default_priority 指定)。
      默认此列表为空,即所有主题都具有相同的优先级。
      注:主题名称中不支持使用逗号和等号。
      示例:
      mqueue_priorities: {"topic/1": 10, "topic/2": 8}

    • mqueue_default_priority

      类型Enum(highest,lowest)
      默认值lowest
      描述

      默认的主题优先级,不在 主题优先级mqueue_priorities) 中的主题将使用此默认优先级。

    • mqueue_store_qos0

      类型Boolean
      默认值true
      描述

      指定在连接断开但会话保持期间,是否需要在消息队列中存储 QoS 0 消息。

    • max_mqueue_len

      类型OneOf(Integer(0..+inf),String("infinity"))
      默认值1000
      描述

      消息队列最大长度。持久客户端断开连接或飞行窗口已满时排队的消息长度。

    • max_inflight

      类型Integer(1..65535)
      默认值32
      描述

      允许在完成应答前同时投递的 QoS 1 和 QoS 2 消息的最大数量。

    • max_subscriptions

      类型OneOf(Integer(1..inf),String("infinity"))
      默认值infinity
      描述

      允许每个客户端建立的最大订阅数量。

    • upgrade_qos

      类型Boolean
      默认值false
      描述

      投递消息时,是否根据订阅主题时的 QoS 等级来强制提升派发的消息的 QoS 等级。

    • await_rel_timeout

      类型Duration
      默认值"300s"
      描述

      客户端发布 QoS 2 消息时,服务器等待 PUBREL 的最长时延。超过该时长后服务器会放弃等待,该 PACKET ID 会被释放,从而允许后续新的 PUBLISH 消息使用。如果超时后收到 PUBREL,服务器将会产生一条告警日志。注意,向订阅客户端转发消息的动作发生在进入等待之前。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

  • authentication

    类型Array(OneOf(Struct(builtin_db),Struct(mysql),Struct(postgresql),Struct(mongo_single),Struct(mongo_rs),Struct(mongo_sharded),Struct(redis_single),Struct(redis_cluster),Struct(redis_sentinel),Struct(http_get),Struct(http_post),Struct(jwt_hmac),Struct(jwt_public_key),Struct(jwt_jwks),Struct(scram),Struct(ldap),Struct(ldap_deprecated)))
    默认值[]
    描述

    默认的 MQTT 监听器的全局认证配置。

    有关每个监听器的单独配置,请参阅监听器配置中的authentication

    此选项可配置为:

    • []: 默认值,允许 *所有* 登录
    • one: 例如 {enable:true,backend:"built_in_database",mechanism="password_based"}
    • chain: 结构体数组。

    当配置了一个认证链时,登录凭据将按照配置的顺序检查后端,直到可以做出'允许'或'拒绝'的决定。

    如果在完全遍历认证链之后没有决定,登录将被拒绝。

    builtin_db

    • password_hash_algorithm

      类型OneOf(Struct(bcrypt_rw),Struct(pbkdf2),Struct(simple))
      默认值{name = sha256, salt_position = prefix}
      描述

      Options for password hash creation and verification.

      bcrypt_rw

      • name

        类型String("bcrypt")
        描述

        BCRYPT password hashing.

      • salt_rounds

        类型Integer(5..10)
        默认值10
        描述

        Work factor for BCRYPT password generation.

      pbkdf2

      • name

        类型String("pbkdf2")
        描述

        PBKDF2 password hashing.

      • mac_fun

        类型Enum(md4,md5,ripemd160,sha,sha224,sha256,sha384,sha512)
        描述

        Specifies mac_fun for PBKDF2 hashing algorithm.

      • iterations

        类型Integer(1..+inf)
        描述

        Iteration count for PBKDF2 hashing algorithm.

      • dk_length

        类型Integer(1..+inf)
        描述

        Derived length for PBKDF2 hashing algorithm. If not specified, calculated automatically based on mac_fun.

      simple

      • name

        类型Enum(plain,md5,sha,sha256,sha512)
        描述

        Simple password hashing algorithm.

      • salt_position

        类型Enum(disable,prefix,suffix)
        默认值prefix
        描述

        Salt position for PLAIN, MD5, SHA, SHA256 and SHA512 algorithms.

    • mechanism

      类型String("password_based")
      描述

      认证方式。

    • backend

      类型String("built_in_database")
      描述

      后端类型。

    • user_id_type

      类型Enum(clientid,username)
      默认值username
      描述

      指定用于客户端身份 ID 认证的字段。

    • bootstrap_file

      类型String
      默认值"${EMQX_ETC_DIR}/auth-built-in-db-bootstrap.csv"
      描述

      引导文件用于将用户导入内置数据库。 如果数据库中已存在用户 ID,则不会导入该用户 ID。 文件内容格式由 bootstrap_type 决定。

    • bootstrap_type

      类型Enum(hash,plain)
      默认值plain
      描述

      指定引导文件包含的数据字段。

      • plain:

        • 所需数据字段:user_idpasswordis_superuser
        • user_id:可以是客户端 ID 或用户名,取决于内置数据库认证的 user_id_type 配置。
        • password:用户的明文密码。
        • is_superuser:布尔值,用户的管理员权限状态。
      • hash:

        • 所需数据字段:user_idpassword_hashsaltis_superuser
        • 类似于 plain 类型的定义,增加了 password_hashsalt 以提升安全性。

      内容可以是 CSV 或 JSON 格式。

      以下是 CSV 示例:user_id,password_hash,salt,is_superuser\nmy_user,b6c743545a7817ae8c8f624371d5f5f0373234bb0ff36b8ffbf19bce0e06ab75,de1024f462fb83910fd13151bd4bd235,true

      JSON 内容应解码为对象数组,例如:[{"user_id": "my_user","password": "s3cr3tp@ssw0rd","is_superuser": true}]

      password_hash 的哈希字符串取决于内置数据库认证机制配置的 password_hash_algorithm。例如,如果配置为 password_hash_algorithm {name = sha256, salt_position = suffix},则在哈希之前将盐附加到密码。以下是等效的 Python 表达式:hashlib.sha256(password + salt).hexdigest()

    • enable

      类型Boolean
      默认值true
      描述

      设为 truefalse 以禁用此认证数据源。

    mysql

    • mechanism

      类型String("password_based")
      描述

      认证方式。

    • backend

      类型String("mysql")
      描述

      后端类型。

    • password_hash_algorithm

      类型OneOf(Struct(bcrypt),Struct(pbkdf2),Struct(simple))
      默认值{name = sha256, salt_position = prefix}
      描述

      Options for password hash verification.

      bcrypt

      • name

        类型String("bcrypt")
        描述

        BCRYPT password hashing.

      pbkdf2

      • name

        类型String("pbkdf2")
        描述

        PBKDF2 password hashing.

      • mac_fun

        类型Enum(md4,md5,ripemd160,sha,sha224,sha256,sha384,sha512)
        描述

        Specifies mac_fun for PBKDF2 hashing algorithm.

      • iterations

        类型Integer(1..+inf)
        描述

        Iteration count for PBKDF2 hashing algorithm.

      • dk_length

        类型Integer(1..+inf)
        描述

        Derived length for PBKDF2 hashing algorithm. If not specified, calculated automatically based on mac_fun.

      simple

      • name

        类型Enum(plain,md5,sha,sha256,sha512)
        描述

        Simple password hashing algorithm.

      • salt_position

        类型Enum(disable,prefix,suffix)
        默认值prefix
        描述

        Salt position for PLAIN, MD5, SHA, SHA256 and SHA512 algorithms.

    • query

      类型String
      描述

      用于查询密码散列等用于认证的数据的 SQL 语句。

    • query_timeout

      类型Duration
      默认值"5s"
      描述

      SQL 查询的超时时间。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • enable

      类型Boolean
      默认值true
      描述

      设为 truefalse 以禁用此认证数据源。

    • server

      类型String
      描述

      用于连接的 IPv4 或 IPv6 地址或主机名。
      主机条目的格式如下:主机[:端口]。
      如果未指定[:端口],将使用 MySQL 的默认端口3306。

    • database

      类型String
      描述

      数据库名字。

    • pool_size

      类型Integer(1..+inf)
      默认值8
      描述

      桥接远端服务时使用的连接池大小。

    • username

      类型String
      默认值root
      描述

      内部数据库的用户名。

    • password

      类型Secret
      描述

      内部数据库密码。
      包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

    • auto_reconnect

      类型Boolean
      描述

      Deprecated since v5.0.15.

    • ssl

      类型Struct(ssl_client_opts)
      默认值{enable = false}
      描述

      启用 SSL 连接。

      ssl_client_opts

      • cacertfile

        类型String
        描述

        受信任的 PEM 格式 CA 证书捆绑文件
        此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
        注意:从文件中失效(删除)证书不会影响已建立的连接。

      • cacerts

        类型Boolean
        描述

        Deprecated since 5.1.4.

      • certfile

        类型String
        描述

        PEM 格式证书链文件
        此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

      • keyfile

        类型String
        描述

        PEM 格式的私钥文件。

      • verify

        类型Enum(verify_peer,verify_none)
        默认值verify_none
        描述

        启用或禁用对等验证。

      • reuse_sessions

        类型Boolean
        默认值true
        描述

        启用 TLS 会话重用。

      • depth

        类型Integer(0..+inf)
        默认值10
        描述

        在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
        如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
        如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

      • password

        类型String
        描述

        包含用户密码的字符串。仅在私钥文件受密码保护时使用。

      • versions

        类型Array(String)
        默认值["tlsv1.3", "tlsv1.2"]
        描述

        支持所有 TLS/DTLS 版本
        注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

      • ciphers

        类型Array(String)
        默认值[]
        描述

        此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
        密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

        名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
        注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

        例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


        注:PSK 的 Ciphers 不支持 tlsv1.3
        如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
        PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
      • secure_renegotiate

        类型Boolean
        默认值true
        描述

        指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
        如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
        当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

      • log_level

        类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
        默认值notice
        描述

        允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

      • hibernate_after

        类型Duration
        默认值"5s"
        描述

        指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • enable

        类型Boolean
        默认值false
        描述

        启用 TLS。

      • server_name_indication

        类型OneOf(String("disable"),String)
        描述

        指定要在 TLS 服务器名称指示扩展中使用的主机名。
        例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
        如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
        然后,主机名也用于对等机的主机名验证证书
        特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

    postgresql

    • mechanism

      类型String("password_based")
      描述

      认证方式。

    • backend

      类型String("postgresql")
      描述

      后端类型。

    • password_hash_algorithm

      类型OneOf(Struct(bcrypt),Struct(pbkdf2),Struct(simple))
      默认值{name = sha256, salt_position = prefix}
      描述

      Options for password hash verification.

      bcrypt

      • name

        类型String("bcrypt")
        描述

        BCRYPT password hashing.

      pbkdf2

      • name

        类型String("pbkdf2")
        描述

        PBKDF2 password hashing.

      • mac_fun

        类型Enum(md4,md5,ripemd160,sha,sha224,sha256,sha384,sha512)
        描述

        Specifies mac_fun for PBKDF2 hashing algorithm.

      • iterations

        类型Integer(1..+inf)
        描述

        Iteration count for PBKDF2 hashing algorithm.

      • dk_length

        类型Integer(1..+inf)
        描述

        Derived length for PBKDF2 hashing algorithm. If not specified, calculated automatically based on mac_fun.

      simple

      • name

        类型Enum(plain,md5,sha,sha256,sha512)
        描述

        Simple password hashing algorithm.

      • salt_position

        类型Enum(disable,prefix,suffix)
        默认值prefix
        描述

        Salt position for PLAIN, MD5, SHA, SHA256 and SHA512 algorithms.

    • query

      类型String
      描述

      用于查询密码散列等用于认证的数据的 SQL 语句。

    • enable

      类型Boolean
      默认值true
      描述

      设为 truefalse 以禁用此认证数据源。

    • server

      类型String
      描述

      要连接的 IPv4 或 IPv6 地址或主机名。
      一个主机条目的格式为:Host[:Port]。
      如果没有指定 [:Port],将使用 PostgreSQL 默认端口 5432。

    • disable_prepared_statements

      类型Boolean
      默认值false
      描述

      在连接中禁用预处理语句的使用。 某些端点,如 PGBouncer 或 Transaction 模式下的 Supabase, 不支持像处理语句这样的会话功能。 对于此类连接,应启用此选项。

    • database

      类型String
      描述

      数据库名字。

    • pool_size

      类型Integer(1..+inf)
      默认值8
      描述

      桥接远端服务时使用的连接池大小。

    • username

      类型String
      描述

      内部数据库的用户名。

    • password

      类型Secret
      描述

      内部数据库密码。
      包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

    • auto_reconnect

      类型Boolean
      描述

      Deprecated since v5.0.15.

    • ssl

      类型Struct(ssl_client_opts)
      默认值{enable = false}
      描述

      启用 SSL 连接。

      ssl_client_opts

      • cacertfile

        类型String
        描述

        受信任的 PEM 格式 CA 证书捆绑文件
        此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
        注意:从文件中失效(删除)证书不会影响已建立的连接。

      • cacerts

        类型Boolean
        描述

        Deprecated since 5.1.4.

      • certfile

        类型String
        描述

        PEM 格式证书链文件
        此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

      • keyfile

        类型String
        描述

        PEM 格式的私钥文件。

      • verify

        类型Enum(verify_peer,verify_none)
        默认值verify_none
        描述

        启用或禁用对等验证。

      • reuse_sessions

        类型Boolean
        默认值true
        描述

        启用 TLS 会话重用。

      • depth

        类型Integer(0..+inf)
        默认值10
        描述

        在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
        如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
        如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

      • password

        类型String
        描述

        包含用户密码的字符串。仅在私钥文件受密码保护时使用。

      • versions

        类型Array(String)
        默认值["tlsv1.3", "tlsv1.2"]
        描述

        支持所有 TLS/DTLS 版本
        注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

      • ciphers

        类型Array(String)
        默认值[]
        描述

        此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
        密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

        名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
        注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

        例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


        注:PSK 的 Ciphers 不支持 tlsv1.3
        如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
        PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
      • secure_renegotiate

        类型Boolean
        默认值true
        描述

        指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
        如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
        当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

      • log_level

        类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
        默认值notice
        描述

        允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

      • hibernate_after

        类型Duration
        默认值"5s"
        描述

        指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • enable

        类型Boolean
        默认值false
        描述

        启用 TLS。

      • server_name_indication

        类型OneOf(String("disable"),String)
        描述

        指定要在 TLS 服务器名称指示扩展中使用的主机名。
        例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
        如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
        然后,主机名也用于对等机的主机名验证证书
        特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

    mongo_single

    • mechanism

      类型String("password_based")
      描述

      认证方式。

    • backend

      类型String("mongodb")
      描述

      后端类型。

    • collection

      类型String
      描述

      存储认证数据的集合。

    • filter

      类型Map
      默认值{}
      描述

      在查询中定义过滤条件的条件表达式。 过滤器支持如下占位符:

      • ${username}: 将在运行时被替换为客户端连接时使用的用户名
      • ${clientid}: 将在运行时被替换为客户端连接时使用的客户端 ID
    • password_hash_field

      类型String
      默认值password_hash
      描述

      存储密码散列值字段。

    • salt_field

      类型String
      默认值salt
      描述

      用于存储盐值的字段。

    • is_superuser_field

      类型String
      默认值is_superuser
      描述

      定义用户是否具有超级用户权限的字段。

    • password_hash_algorithm

      类型OneOf(Struct(bcrypt),Struct(pbkdf2),Struct(simple))
      默认值{name = sha256, salt_position = prefix}
      描述

      Options for password hash verification.

      bcrypt

      • name

        类型String("bcrypt")
        描述

        BCRYPT password hashing.

      pbkdf2

      • name

        类型String("pbkdf2")
        描述

        PBKDF2 password hashing.

      • mac_fun

        类型Enum(md4,md5,ripemd160,sha,sha224,sha256,sha384,sha512)
        描述

        Specifies mac_fun for PBKDF2 hashing algorithm.

      • iterations

        类型Integer(1..+inf)
        描述

        Iteration count for PBKDF2 hashing algorithm.

      • dk_length

        类型Integer(1..+inf)
        描述

        Derived length for PBKDF2 hashing algorithm. If not specified, calculated automatically based on mac_fun.

      simple

      • name

        类型Enum(plain,md5,sha,sha256,sha512)
        描述

        Simple password hashing algorithm.

      • salt_position

        类型Enum(disable,prefix,suffix)
        默认值prefix
        描述

        Salt position for PLAIN, MD5, SHA, SHA256 and SHA512 algorithms.

    • enable

      类型Boolean
      默认值true
      描述

      设为 truefalse 以禁用此认证数据源。

    • mongo_type

      类型String("single")
      默认值single
      描述

      独立实例。当MongoDB服务器以独立模式运行时,必须设置为single

    • server

      类型String
      描述

      要连接的 IPv4 或 IPv6 地址或主机名。
      主机条目具有以下形式:主机[:端口]。
      如果未指定[:端口],则使用MongoDB的默认端口27017。

    • w_mode

      类型Enum(unsafe,safe)
      默认值unsafe
      描述

      写入模式

    • srv_record

      类型Boolean
      默认值false
      描述

      使用 DNS SRV 记录。

    • pool_size

      类型Integer(1..+inf)
      默认值8
      描述

      桥接远端服务时使用的连接池大小。

    • username

      类型String
      描述

      内部数据库的用户名。

    • password

      类型Secret
      描述

      内部数据库密码。
      包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

    • use_legacy_protocol

      类型Enum(auto,true,false)
      默认值auto
      描述

      是否使用 MongoDB 的传统协议与数据库通信。默认情况下,将尝试自动确定是否支持较新的协议。

    • auth_source

      类型String
      描述

      与用户认证信息关联的数据库名称。

    • database

      类型String
      描述

      数据库名字。

    • topology

      类型Struct(topology)

      topology

      • max_overflow

        类型Integer(0..+inf)
        默认值0
        描述

        在池中的所有工作线程都繁忙时,可以创建的附加工作线程的最大数量。这有助于通过允许更多并发连接到 MongoDB 服务器来管理工作负载的暂时性波动。

      • overflow_ttl

        类型Duration
        描述

        超出配置的池大小("溢出")的工作线程在终止之前的时间段。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • overflow_check_period

        类型Duration
        描述

        检查是否存在多余工作线程("溢出")的周期。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • local_threshold_ms

        类型Duration
        描述

        用于在多个合适的 MongoDB 实例中进行选择的延迟窗口的大小。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • connect_timeout_ms

        类型Duration
        描述

        在超时之前尝试连接的持续时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • socket_timeout_ms

        类型Duration
        描述

        在套接字上尝试发送或接收超时之前的持续时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • server_selection_timeout_ms

        类型Duration
        描述

        指定在抛出异常之前进行服务器选择的阻塞时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • wait_queue_timeout_ms

        类型Duration
        描述

        工作线程等待连接可用的最长时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • heartbeat_frequency_ms

        类型Duration
        默认值"200s"
        描述

        控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • min_heartbeat_frequency_ms

        类型Duration
        描述

        控制心跳之间等待的最短时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • ssl

      类型Struct(ssl_client_opts)
      默认值{enable = false}
      描述

      启用 SSL 连接。

      ssl_client_opts

      • cacertfile

        类型String
        描述

        受信任的 PEM 格式 CA 证书捆绑文件
        此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
        注意:从文件中失效(删除)证书不会影响已建立的连接。

      • cacerts

        类型Boolean
        描述

        Deprecated since 5.1.4.

      • certfile

        类型String
        描述

        PEM 格式证书链文件
        此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

      • keyfile

        类型String
        描述

        PEM 格式的私钥文件。

      • verify

        类型Enum(verify_peer,verify_none)
        默认值verify_none
        描述

        启用或禁用对等验证。

      • reuse_sessions

        类型Boolean
        默认值true
        描述

        启用 TLS 会话重用。

      • depth

        类型Integer(0..+inf)
        默认值10
        描述

        在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
        如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
        如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

      • password

        类型String
        描述

        包含用户密码的字符串。仅在私钥文件受密码保护时使用。

      • versions

        类型Array(String)
        默认值["tlsv1.3", "tlsv1.2"]
        描述

        支持所有 TLS/DTLS 版本
        注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

      • ciphers

        类型Array(String)
        默认值[]
        描述

        此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
        密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

        名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
        注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

        例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


        注:PSK 的 Ciphers 不支持 tlsv1.3
        如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
        PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
      • secure_renegotiate

        类型Boolean
        默认值true
        描述

        指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
        如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
        当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

      • log_level

        类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
        默认值notice
        描述

        允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

      • hibernate_after

        类型Duration
        默认值"5s"
        描述

        指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • enable

        类型Boolean
        默认值false
        描述

        启用 TLS。

      • server_name_indication

        类型OneOf(String("disable"),String)
        描述

        指定要在 TLS 服务器名称指示扩展中使用的主机名。
        例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
        如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
        然后,主机名也用于对等机的主机名验证证书
        特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

    mongo_rs

    • mechanism

      类型String("password_based")
      描述

      认证方式。

    • backend

      类型String("mongodb")
      描述

      后端类型。

    • collection

      类型String
      描述

      存储认证数据的集合。

    • filter

      类型Map
      默认值{}
      描述

      在查询中定义过滤条件的条件表达式。 过滤器支持如下占位符:

      • ${username}: 将在运行时被替换为客户端连接时使用的用户名
      • ${clientid}: 将在运行时被替换为客户端连接时使用的客户端 ID
    • password_hash_field

      类型String
      默认值password_hash
      描述

      存储密码散列值字段。

    • salt_field

      类型String
      默认值salt
      描述

      用于存储盐值的字段。

    • is_superuser_field

      类型String
      默认值is_superuser
      描述

      定义用户是否具有超级用户权限的字段。

    • password_hash_algorithm

      类型OneOf(Struct(bcrypt),Struct(pbkdf2),Struct(simple))
      默认值{name = sha256, salt_position = prefix}
      描述

      Options for password hash verification.

      bcrypt

      • name

        类型String("bcrypt")
        描述

        BCRYPT password hashing.

      pbkdf2

      • name

        类型String("pbkdf2")
        描述

        PBKDF2 password hashing.

      • mac_fun

        类型Enum(md4,md5,ripemd160,sha,sha224,sha256,sha384,sha512)
        描述

        Specifies mac_fun for PBKDF2 hashing algorithm.

      • iterations

        类型Integer(1..+inf)
        描述

        Iteration count for PBKDF2 hashing algorithm.

      • dk_length

        类型Integer(1..+inf)
        描述

        Derived length for PBKDF2 hashing algorithm. If not specified, calculated automatically based on mac_fun.

      simple

      • name

        类型Enum(plain,md5,sha,sha256,sha512)
        描述

        Simple password hashing algorithm.

      • salt_position

        类型Enum(disable,prefix,suffix)
        默认值prefix
        描述

        Salt position for PLAIN, MD5, SHA, SHA256 and SHA512 algorithms.

    • enable

      类型Boolean
      默认值true
      描述

      设为 truefalse 以禁用此认证数据源。

    • mongo_type

      类型String("rs")
      默认值rs
      描述

      副本集。当MongoDB服务器以副本集模式运行时,必须设置为rs

    • servers

      类型String
      描述

      集群连接的节点列表。节点应使用逗号分隔,例如:节点[,节点]。 对于每个节点,应该是要连接的 IPv4 或 IPv6 地址或主机名。 主机条目具有以下形式:主机[:端口]。 如果未指定[:端口],则使用 MongoDB 的默认端口27017。

    • w_mode

      类型Enum(unsafe,safe)
      默认值unsafe
      描述

      写入模式

    • r_mode

      类型Enum(master,slave_ok)
      默认值master
      描述

      读取模式。

    • replica_set_name

      类型String
      描述

      副本集的名称。

    • srv_record

      类型Boolean
      默认值false
      描述

      使用 DNS SRV 记录。

    • pool_size

      类型Integer(1..+inf)
      默认值8
      描述

      桥接远端服务时使用的连接池大小。

    • username

      类型String
      描述

      内部数据库的用户名。

    • password

      类型Secret
      描述

      内部数据库密码。
      包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

    • use_legacy_protocol

      类型Enum(auto,true,false)
      默认值auto
      描述

      是否使用 MongoDB 的传统协议与数据库通信。默认情况下,将尝试自动确定是否支持较新的协议。

    • auth_source

      类型String
      描述

      与用户认证信息关联的数据库名称。

    • database

      类型String
      描述

      数据库名字。

    • topology

      类型Struct(topology)

      topology

      • max_overflow

        类型Integer(0..+inf)
        默认值0
        描述

        在池中的所有工作线程都繁忙时,可以创建的附加工作线程的最大数量。这有助于通过允许更多并发连接到 MongoDB 服务器来管理工作负载的暂时性波动。

      • overflow_ttl

        类型Duration
        描述

        超出配置的池大小("溢出")的工作线程在终止之前的时间段。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • overflow_check_period

        类型Duration
        描述

        检查是否存在多余工作线程("溢出")的周期。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • local_threshold_ms

        类型Duration
        描述

        用于在多个合适的 MongoDB 实例中进行选择的延迟窗口的大小。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • connect_timeout_ms

        类型Duration
        描述

        在超时之前尝试连接的持续时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • socket_timeout_ms

        类型Duration
        描述

        在套接字上尝试发送或接收超时之前的持续时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • server_selection_timeout_ms

        类型Duration
        描述

        指定在抛出异常之前进行服务器选择的阻塞时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • wait_queue_timeout_ms

        类型Duration
        描述

        工作线程等待连接可用的最长时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • heartbeat_frequency_ms

        类型Duration
        默认值"200s"
        描述

        控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • min_heartbeat_frequency_ms

        类型Duration
        描述

        控制心跳之间等待的最短时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • ssl

      类型Struct(ssl_client_opts)
      默认值{enable = false}
      描述

      启用 SSL 连接。

      ssl_client_opts

      • cacertfile

        类型String
        描述

        受信任的 PEM 格式 CA 证书捆绑文件
        此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
        注意:从文件中失效(删除)证书不会影响已建立的连接。

      • cacerts

        类型Boolean
        描述

        Deprecated since 5.1.4.

      • certfile

        类型String
        描述

        PEM 格式证书链文件
        此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

      • keyfile

        类型String
        描述

        PEM 格式的私钥文件。

      • verify

        类型Enum(verify_peer,verify_none)
        默认值verify_none
        描述

        启用或禁用对等验证。

      • reuse_sessions

        类型Boolean
        默认值true
        描述

        启用 TLS 会话重用。

      • depth

        类型Integer(0..+inf)
        默认值10
        描述

        在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
        如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
        如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

      • password

        类型String
        描述

        包含用户密码的字符串。仅在私钥文件受密码保护时使用。

      • versions

        类型Array(String)
        默认值["tlsv1.3", "tlsv1.2"]
        描述

        支持所有 TLS/DTLS 版本
        注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

      • ciphers

        类型Array(String)
        默认值[]
        描述

        此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
        密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

        名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
        注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

        例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


        注:PSK 的 Ciphers 不支持 tlsv1.3
        如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
        PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
      • secure_renegotiate

        类型Boolean
        默认值true
        描述

        指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
        如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
        当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

      • log_level

        类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
        默认值notice
        描述

        允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

      • hibernate_after

        类型Duration
        默认值"5s"
        描述

        指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • enable

        类型Boolean
        默认值false
        描述

        启用 TLS。

      • server_name_indication

        类型OneOf(String("disable"),String)
        描述

        指定要在 TLS 服务器名称指示扩展中使用的主机名。
        例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
        如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
        然后,主机名也用于对等机的主机名验证证书
        特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

    mongo_sharded

    • mechanism

      类型String("password_based")
      描述

      认证方式。

    • backend

      类型String("mongodb")
      描述

      后端类型。

    • collection

      类型String
      描述

      存储认证数据的集合。

    • filter

      类型Map
      默认值{}
      描述

      在查询中定义过滤条件的条件表达式。 过滤器支持如下占位符:

      • ${username}: 将在运行时被替换为客户端连接时使用的用户名
      • ${clientid}: 将在运行时被替换为客户端连接时使用的客户端 ID
    • password_hash_field

      类型String
      默认值password_hash
      描述

      存储密码散列值字段。

    • salt_field

      类型String
      默认值salt
      描述

      用于存储盐值的字段。

    • is_superuser_field

      类型String
      默认值is_superuser
      描述

      定义用户是否具有超级用户权限的字段。

    • password_hash_algorithm

      类型OneOf(Struct(bcrypt),Struct(pbkdf2),Struct(simple))
      默认值{name = sha256, salt_position = prefix}
      描述

      Options for password hash verification.

      bcrypt

      • name

        类型String("bcrypt")
        描述

        BCRYPT password hashing.

      pbkdf2

      • name

        类型String("pbkdf2")
        描述

        PBKDF2 password hashing.

      • mac_fun

        类型Enum(md4,md5,ripemd160,sha,sha224,sha256,sha384,sha512)
        描述

        Specifies mac_fun for PBKDF2 hashing algorithm.

      • iterations

        类型Integer(1..+inf)
        描述

        Iteration count for PBKDF2 hashing algorithm.

      • dk_length

        类型Integer(1..+inf)
        描述

        Derived length for PBKDF2 hashing algorithm. If not specified, calculated automatically based on mac_fun.

      simple

      • name

        类型Enum(plain,md5,sha,sha256,sha512)
        描述

        Simple password hashing algorithm.

      • salt_position

        类型Enum(disable,prefix,suffix)
        默认值prefix
        描述

        Salt position for PLAIN, MD5, SHA, SHA256 and SHA512 algorithms.

    • enable

      类型Boolean
      默认值true
      描述

      设为 truefalse 以禁用此认证数据源。

    • mongo_type

      类型String("sharded")
      默认值sharded
      描述

      分片集群。当 MongoDB 服务器以分片模式运行时,必须设置为sharded

    • servers

      类型String
      描述

      集群连接的节点列表。节点应使用逗号分隔,例如:节点[,节点]。 对于每个节点,应该是要连接的 IPv4 或 IPv6 地址或主机名。 主机条目具有以下形式:主机[:端口]。 如果未指定[:端口],则使用 MongoDB 的默认端口27017。

    • w_mode

      类型Enum(unsafe,safe)
      默认值unsafe
      描述

      写入模式

    • srv_record

      类型Boolean
      默认值false
      描述

      使用 DNS SRV 记录。

    • pool_size

      类型Integer(1..+inf)
      默认值8
      描述

      桥接远端服务时使用的连接池大小。

    • username

      类型String
      描述

      内部数据库的用户名。

    • password

      类型Secret
      描述

      内部数据库密码。
      包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

    • use_legacy_protocol

      类型Enum(auto,true,false)
      默认值auto
      描述

      是否使用 MongoDB 的传统协议与数据库通信。默认情况下,将尝试自动确定是否支持较新的协议。

    • auth_source

      类型String
      描述

      与用户认证信息关联的数据库名称。

    • database

      类型String
      描述

      数据库名字。

    • topology

      类型Struct(topology)

      topology

      • max_overflow

        类型Integer(0..+inf)
        默认值0
        描述

        在池中的所有工作线程都繁忙时,可以创建的附加工作线程的最大数量。这有助于通过允许更多并发连接到 MongoDB 服务器来管理工作负载的暂时性波动。

      • overflow_ttl

        类型Duration
        描述

        超出配置的池大小("溢出")的工作线程在终止之前的时间段。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • overflow_check_period

        类型Duration
        描述

        检查是否存在多余工作线程("溢出")的周期。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • local_threshold_ms

        类型Duration
        描述

        用于在多个合适的 MongoDB 实例中进行选择的延迟窗口的大小。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • connect_timeout_ms

        类型Duration
        描述

        在超时之前尝试连接的持续时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • socket_timeout_ms

        类型Duration
        描述

        在套接字上尝试发送或接收超时之前的持续时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • server_selection_timeout_ms

        类型Duration
        描述

        指定在抛出异常之前进行服务器选择的阻塞时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • wait_queue_timeout_ms

        类型Duration
        描述

        工作线程等待连接可用的最长时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • heartbeat_frequency_ms

        类型Duration
        默认值"200s"
        描述

        控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • min_heartbeat_frequency_ms

        类型Duration
        描述

        控制心跳之间等待的最短时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • ssl

      类型Struct(ssl_client_opts)
      默认值{enable = false}
      描述

      启用 SSL 连接。

      ssl_client_opts

      • cacertfile

        类型String
        描述

        受信任的 PEM 格式 CA 证书捆绑文件
        此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
        注意:从文件中失效(删除)证书不会影响已建立的连接。

      • cacerts

        类型Boolean
        描述

        Deprecated since 5.1.4.

      • certfile

        类型String
        描述

        PEM 格式证书链文件
        此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

      • keyfile

        类型String
        描述

        PEM 格式的私钥文件。

      • verify

        类型Enum(verify_peer,verify_none)
        默认值verify_none
        描述

        启用或禁用对等验证。

      • reuse_sessions

        类型Boolean
        默认值true
        描述

        启用 TLS 会话重用。

      • depth

        类型Integer(0..+inf)
        默认值10
        描述

        在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
        如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
        如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

      • password

        类型String
        描述

        包含用户密码的字符串。仅在私钥文件受密码保护时使用。

      • versions

        类型Array(String)
        默认值["tlsv1.3", "tlsv1.2"]
        描述

        支持所有 TLS/DTLS 版本
        注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

      • ciphers

        类型Array(String)
        默认值[]
        描述

        此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
        密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

        名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
        注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

        例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


        注:PSK 的 Ciphers 不支持 tlsv1.3
        如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
        PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
      • secure_renegotiate

        类型Boolean
        默认值true
        描述

        指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
        如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
        当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

      • log_level

        类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
        默认值notice
        描述

        允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

      • hibernate_after

        类型Duration
        默认值"5s"
        描述

        指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • enable

        类型Boolean
        默认值false
        描述

        启用 TLS。

      • server_name_indication

        类型OneOf(String("disable"),String)
        描述

        指定要在 TLS 服务器名称指示扩展中使用的主机名。
        例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
        如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
        然后,主机名也用于对等机的主机名验证证书
        特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

    redis_single

    • mechanism

      类型String("password_based")
      描述

      认证方式。

    • backend

      类型String("redis")
      描述

      后端类型。

    • cmd

      类型String
      描述

      用于查询密码散列等用于认证的数据的 Redis 命令,目前仅支持 HGETHMGET

    • password_hash_algorithm

      类型OneOf(Struct(bcrypt),Struct(pbkdf2),Struct(simple))
      默认值{name = sha256, salt_position = prefix}
      描述

      Options for password hash verification.

      bcrypt

      • name

        类型String("bcrypt")
        描述

        BCRYPT password hashing.

      pbkdf2

      • name

        类型String("pbkdf2")
        描述

        PBKDF2 password hashing.

      • mac_fun

        类型Enum(md4,md5,ripemd160,sha,sha224,sha256,sha384,sha512)
        描述

        Specifies mac_fun for PBKDF2 hashing algorithm.

      • iterations

        类型Integer(1..+inf)
        描述

        Iteration count for PBKDF2 hashing algorithm.

      • dk_length

        类型Integer(1..+inf)
        描述

        Derived length for PBKDF2 hashing algorithm. If not specified, calculated automatically based on mac_fun.

      simple

      • name

        类型Enum(plain,md5,sha,sha256,sha512)
        描述

        Simple password hashing algorithm.

      • salt_position

        类型Enum(disable,prefix,suffix)
        默认值prefix
        描述

        Salt position for PLAIN, MD5, SHA, SHA256 and SHA512 algorithms.

    • enable

      类型Boolean
      默认值true
      描述

      设为 truefalse 以禁用此认证数据源。

    • server

      类型String
      描述

      将要连接的 IPv4 或 IPv6 地址,或者主机名。主机名具有以下形式:Host[:Port]。如果未指定 [:Port],则使用 Redis 默认端口 6379。

    • redis_type

      类型String("single")
      默认值single
      描述

      Single 模式。 当 Redis 服务器在 Single 模式下运行时必须设置为 'single' 。

    • pool_size

      类型Integer(1..+inf)
      默认值8
      描述

      桥接远端服务时使用的连接池大小。

    • username

      类型String
      描述

      内部数据库的用户名。

    • password

      类型Secret
      描述

      内部数据库密码。
      包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

    • database

      类型Integer(0..+inf)
      默认值0
      描述

      Redis 数据库 ID。

    • auto_reconnect

      类型Boolean
      描述

      Deprecated since v5.0.15.

    • ssl

      类型Struct(ssl_client_opts)
      默认值{enable = false}
      描述

      启用 SSL 连接。

      ssl_client_opts

      • cacertfile

        类型String
        描述

        受信任的 PEM 格式 CA 证书捆绑文件
        此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
        注意:从文件中失效(删除)证书不会影响已建立的连接。

      • cacerts

        类型Boolean
        描述

        Deprecated since 5.1.4.

      • certfile

        类型String
        描述

        PEM 格式证书链文件
        此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

      • keyfile

        类型String
        描述

        PEM 格式的私钥文件。

      • verify

        类型Enum(verify_peer,verify_none)
        默认值verify_none
        描述

        启用或禁用对等验证。

      • reuse_sessions

        类型Boolean
        默认值true
        描述

        启用 TLS 会话重用。

      • depth

        类型Integer(0..+inf)
        默认值10
        描述

        在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
        如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
        如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

      • password

        类型String
        描述

        包含用户密码的字符串。仅在私钥文件受密码保护时使用。

      • versions

        类型Array(String)
        默认值["tlsv1.3", "tlsv1.2"]
        描述

        支持所有 TLS/DTLS 版本
        注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

      • ciphers

        类型Array(String)
        默认值[]
        描述

        此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
        密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

        名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
        注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

        例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


        注:PSK 的 Ciphers 不支持 tlsv1.3
        如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
        PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
      • secure_renegotiate

        类型Boolean
        默认值true
        描述

        指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
        如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
        当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

      • log_level

        类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
        默认值notice
        描述

        允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

      • hibernate_after

        类型Duration
        默认值"5s"
        描述

        指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • enable

        类型Boolean
        默认值false
        描述

        启用 TLS。

      • server_name_indication

        类型OneOf(String("disable"),String)
        描述

        指定要在 TLS 服务器名称指示扩展中使用的主机名。
        例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
        如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
        然后,主机名也用于对等机的主机名验证证书
        特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

    redis_cluster

    • mechanism

      类型String("password_based")
      描述

      认证方式。

    • backend

      类型String("redis")
      描述

      后端类型。

    • cmd

      类型String
      描述

      用于查询密码散列等用于认证的数据的 Redis 命令,目前仅支持 HGETHMGET

    • password_hash_algorithm

      类型OneOf(Struct(bcrypt),Struct(pbkdf2),Struct(simple))
      默认值{name = sha256, salt_position = prefix}
      描述

      Options for password hash verification.

      bcrypt

      • name

        类型String("bcrypt")
        描述

        BCRYPT password hashing.

      pbkdf2

      • name

        类型String("pbkdf2")
        描述

        PBKDF2 password hashing.

      • mac_fun

        类型Enum(md4,md5,ripemd160,sha,sha224,sha256,sha384,sha512)
        描述

        Specifies mac_fun for PBKDF2 hashing algorithm.

      • iterations

        类型Integer(1..+inf)
        描述

        Iteration count for PBKDF2 hashing algorithm.

      • dk_length

        类型Integer(1..+inf)
        描述

        Derived length for PBKDF2 hashing algorithm. If not specified, calculated automatically based on mac_fun.

      simple

      • name

        类型Enum(plain,md5,sha,sha256,sha512)
        描述

        Simple password hashing algorithm.

      • salt_position

        类型Enum(disable,prefix,suffix)
        默认值prefix
        描述

        Salt position for PLAIN, MD5, SHA, SHA256 and SHA512 algorithms.

    • enable

      类型Boolean
      默认值true
      描述

      设为 truefalse 以禁用此认证数据源。

    • servers

      类型String
      描述

      集群将要连接的节点列表。 节点之间用逗号分隔,如:Node[,Node]。每个节点的配置为:将要连接的 IPv4 或 IPv6 地址或主机名。主机名具有以下形式:Host[:Port]。如果未指定 [:Port],则使用 Redis 默认端口 6379。

    • redis_type

      类型String("cluster")
      默认值cluster
      描述

      Cluster 模式。当 Redis 服务器在集群模式下运行时必须设置为'cluster'。

    • pool_size

      类型Integer(1..+inf)
      默认值8
      描述

      桥接远端服务时使用的连接池大小。

    • username

      类型String
      描述

      内部数据库的用户名。

    • password

      类型Secret
      描述

      内部数据库密码。
      包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

    • auto_reconnect

      类型Boolean
      描述

      Deprecated since v5.0.15.

    • ssl

      类型Struct(ssl_client_opts)
      默认值{enable = false}
      描述

      启用 SSL 连接。

      ssl_client_opts

      • cacertfile

        类型String
        描述

        受信任的 PEM 格式 CA 证书捆绑文件
        此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
        注意:从文件中失效(删除)证书不会影响已建立的连接。

      • cacerts

        类型Boolean
        描述

        Deprecated since 5.1.4.

      • certfile

        类型String
        描述

        PEM 格式证书链文件
        此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

      • keyfile

        类型String
        描述

        PEM 格式的私钥文件。

      • verify

        类型Enum(verify_peer,verify_none)
        默认值verify_none
        描述

        启用或禁用对等验证。

      • reuse_sessions

        类型Boolean
        默认值true
        描述

        启用 TLS 会话重用。

      • depth

        类型Integer(0..+inf)
        默认值10
        描述

        在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
        如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
        如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

      • password

        类型String
        描述

        包含用户密码的字符串。仅在私钥文件受密码保护时使用。

      • versions

        类型Array(String)
        默认值["tlsv1.3", "tlsv1.2"]
        描述

        支持所有 TLS/DTLS 版本
        注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

      • ciphers

        类型Array(String)
        默认值[]
        描述

        此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
        密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

        名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
        注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

        例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


        注:PSK 的 Ciphers 不支持 tlsv1.3
        如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
        PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
      • secure_renegotiate

        类型Boolean
        默认值true
        描述

        指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
        如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
        当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

      • log_level

        类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
        默认值notice
        描述

        允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

      • hibernate_after

        类型Duration
        默认值"5s"
        描述

        指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • enable

        类型Boolean
        默认值false
        描述

        启用 TLS。

      • server_name_indication

        类型OneOf(String("disable"),String)
        描述

        指定要在 TLS 服务器名称指示扩展中使用的主机名。
        例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
        如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
        然后,主机名也用于对等机的主机名验证证书
        特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

    redis_sentinel

    • mechanism

      类型String("password_based")
      描述

      认证方式。

    • backend

      类型String("redis")
      描述

      后端类型。

    • cmd

      类型String
      描述

      用于查询密码散列等用于认证的数据的 Redis 命令,目前仅支持 HGETHMGET

    • password_hash_algorithm

      类型OneOf(Struct(bcrypt),Struct(pbkdf2),Struct(simple))
      默认值{name = sha256, salt_position = prefix}
      描述

      Options for password hash verification.

      bcrypt

      • name

        类型String("bcrypt")
        描述

        BCRYPT password hashing.

      pbkdf2

      • name

        类型String("pbkdf2")
        描述

        PBKDF2 password hashing.

      • mac_fun

        类型Enum(md4,md5,ripemd160,sha,sha224,sha256,sha384,sha512)
        描述

        Specifies mac_fun for PBKDF2 hashing algorithm.

      • iterations

        类型Integer(1..+inf)
        描述

        Iteration count for PBKDF2 hashing algorithm.

      • dk_length

        类型Integer(1..+inf)
        描述

        Derived length for PBKDF2 hashing algorithm. If not specified, calculated automatically based on mac_fun.

      simple

      • name

        类型Enum(plain,md5,sha,sha256,sha512)
        描述

        Simple password hashing algorithm.

      • salt_position

        类型Enum(disable,prefix,suffix)
        默认值prefix
        描述

        Salt position for PLAIN, MD5, SHA, SHA256 and SHA512 algorithms.

    • enable

      类型Boolean
      默认值true
      描述

      设为 truefalse 以禁用此认证数据源。

    • servers

      类型String
      描述

      集群将要连接的节点列表。 节点之间用逗号分隔,如:Node[,Node]。每个节点的配置为:将要连接的 IPv4 或 IPv6 地址或主机名。主机名具有以下形式:Host[:Port]。如果未指定 [:Port],则使用 Redis 默认端口 6379。

    • redis_type

      类型String("sentinel")
      默认值sentinel
      描述

      Sentinel 模式。 当 Redis 服务器在 Senitel 模式下运行时必须设置为 'sentinel' 。

    • sentinel

      类型String
      描述

      Redis sentinel 模式下的集群名称。

    • pool_size

      类型Integer(1..+inf)
      默认值8
      描述

      桥接远端服务时使用的连接池大小。

    • username

      类型String
      描述

      内部数据库的用户名。

    • password

      类型Secret
      描述

      内部数据库密码。
      包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

    • database

      类型Integer(0..+inf)
      默认值0
      描述

      Redis 数据库 ID。

    • auto_reconnect

      类型Boolean
      描述

      Deprecated since v5.0.15.

    • ssl

      类型Struct(ssl_client_opts)
      默认值{enable = false}
      描述

      启用 SSL 连接。

      ssl_client_opts

      • cacertfile

        类型String
        描述

        受信任的 PEM 格式 CA 证书捆绑文件
        此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
        注意:从文件中失效(删除)证书不会影响已建立的连接。

      • cacerts

        类型Boolean
        描述

        Deprecated since 5.1.4.

      • certfile

        类型String
        描述

        PEM 格式证书链文件
        此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

      • keyfile

        类型String
        描述

        PEM 格式的私钥文件。

      • verify

        类型Enum(verify_peer,verify_none)
        默认值verify_none
        描述

        启用或禁用对等验证。

      • reuse_sessions

        类型Boolean
        默认值true
        描述

        启用 TLS 会话重用。

      • depth

        类型Integer(0..+inf)
        默认值10
        描述

        在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
        如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
        如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

      • password

        类型String
        描述

        包含用户密码的字符串。仅在私钥文件受密码保护时使用。

      • versions

        类型Array(String)
        默认值["tlsv1.3", "tlsv1.2"]
        描述

        支持所有 TLS/DTLS 版本
        注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

      • ciphers

        类型Array(String)
        默认值[]
        描述

        此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
        密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

        名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
        注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

        例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


        注:PSK 的 Ciphers 不支持 tlsv1.3
        如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
        PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
      • secure_renegotiate

        类型Boolean
        默认值true
        描述

        指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
        如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
        当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

      • log_level

        类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
        默认值notice
        描述

        允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

      • hibernate_after

        类型Duration
        默认值"5s"
        描述

        指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • enable

        类型Boolean
        默认值false
        描述

        启用 TLS。

      • server_name_indication

        类型OneOf(String("disable"),String)
        描述

        指定要在 TLS 服务器名称指示扩展中使用的主机名。
        例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
        如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
        然后,主机名也用于对等机的主机名验证证书
        特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

    http_get

    • method

      类型String("get")
      描述

      HTTP 请求方法。

    • headers

      类型Map
      默认值{accept = "application/json", cache-control = "no-cache", connection = "keep-alive", keep-alive = "timeout=30, max=1000"}
      描述

      HTTP Headers 列表 (无 content-type) 。

    • mechanism

      类型String("password_based")
      描述

      认证方式。

    • backend

      类型String("http")
      描述

      后端类型。

    • url

      类型String
      描述

      认证 HTTP 服务器地址。

    • body

      类型Map
      描述

      HTTP 请求体。

    • request_timeout

      类型Duration
      默认值"5s"
      描述

      HTTP 请求超时时长。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • enable

      类型Boolean
      默认值true
      描述

      设为 truefalse 以禁用此认证数据源。

    • request

      类型Struct(request)
      描述

      配置 HTTP 请求参数。

      request

      • method

        类型String
        描述

        HTTP 请求方法。

      • path

        类型String
        描述

        URL 路径。
        用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

      • body

        类型String
        描述

        HTTP 请求的主体。
        用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

      • headers

        类型Map
        描述

        HTTP 请求头列表。

      • max_retries

        类型Integer(0..+inf)
        描述

        如果发送请求时出错,最大重试次数。

      • request_timeout

        类型Duration
        描述

        HTTP 请求超时时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • ssl

      类型Struct(ssl_client_opts)
      默认值{enable = false}
      描述

      启用 SSL 连接。

      ssl_client_opts

      • cacertfile

        类型String
        描述

        受信任的 PEM 格式 CA 证书捆绑文件
        此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
        注意:从文件中失效(删除)证书不会影响已建立的连接。

      • cacerts

        类型Boolean
        描述

        Deprecated since 5.1.4.

      • certfile

        类型String
        描述

        PEM 格式证书链文件
        此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

      • keyfile

        类型String
        描述

        PEM 格式的私钥文件。

      • verify

        类型Enum(verify_peer,verify_none)
        默认值verify_none
        描述

        启用或禁用对等验证。

      • reuse_sessions

        类型Boolean
        默认值true
        描述

        启用 TLS 会话重用。

      • depth

        类型Integer(0..+inf)
        默认值10
        描述

        在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
        如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
        如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

      • password

        类型String
        描述

        包含用户密码的字符串。仅在私钥文件受密码保护时使用。

      • versions

        类型Array(String)
        默认值["tlsv1.3", "tlsv1.2"]
        描述

        支持所有 TLS/DTLS 版本
        注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

      • ciphers

        类型Array(String)
        默认值[]
        描述

        此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
        密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

        名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
        注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

        例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


        注:PSK 的 Ciphers 不支持 tlsv1.3
        如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
        PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
      • secure_renegotiate

        类型Boolean
        默认值true
        描述

        指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
        如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
        当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

      • log_level

        类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
        默认值notice
        描述

        允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

      • hibernate_after

        类型Duration
        默认值"5s"
        描述

        指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • enable

        类型Boolean
        默认值false
        描述

        启用 TLS。

      • server_name_indication

        类型OneOf(String("disable"),String)
        描述

        指定要在 TLS 服务器名称指示扩展中使用的主机名。
        例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
        如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
        然后,主机名也用于对等机的主机名验证证书
        特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

    • pool_size

      类型Integer(1..+inf)
      默认值8
      描述

      连接池大小。

    • connect_timeout

      类型Duration
      默认值"15s"
      描述

      连接到 HTTP 服务器的超时时间。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • max_retries

      类型Integer(0..+inf)
      描述

      Deprecated since 5.0.4.

    • enable_pipelining

      类型Integer(1..+inf)
      默认值100
      描述

      一个正整数。是否连续发送 HTTP 请求,当设置为1时,意味着在发送每个 HTTP 请求后,需要等待服务器返回,然后继续发送下一个请求。

    • retry_interval

      类型Duration
      描述

      Deprecated since 5.0.4.
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    http_post

    • method

      类型String("post")
      描述

      HTTP 请求方法。

    • headers

      类型Map
      默认值{accept = "application/json", cache-control = "no-cache", connection = "keep-alive", content-type = "application/json", keep-alive = "timeout=30, max=1000"}
      描述

      HTTP Headers 列表

    • mechanism

      类型String("password_based")
      描述

      认证方式。

    • backend

      类型String("http")
      描述

      后端类型。

    • url

      类型String
      描述

      认证 HTTP 服务器地址。

    • body

      类型Map
      描述

      HTTP 请求体。

    • request_timeout

      类型Duration
      默认值"5s"
      描述

      HTTP 请求超时时长。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • enable

      类型Boolean
      默认值true
      描述

      设为 truefalse 以禁用此认证数据源。

    • request

      类型Struct(request)
      描述

      配置 HTTP 请求参数。

      request

      • method

        类型String
        描述

        HTTP 请求方法。

      • path

        类型String
        描述

        URL 路径。
        用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

      • body

        类型String
        描述

        HTTP 请求的主体。
        用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

      • headers

        类型Map
        描述

        HTTP 请求头列表。

      • max_retries

        类型Integer(0..+inf)
        描述

        如果发送请求时出错,最大重试次数。

      • request_timeout

        类型Duration
        描述

        HTTP 请求超时时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • ssl

      类型Struct(ssl_client_opts)
      默认值{enable = false}
      描述

      启用 SSL 连接。

      ssl_client_opts

      • cacertfile

        类型String
        描述

        受信任的 PEM 格式 CA 证书捆绑文件
        此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
        注意:从文件中失效(删除)证书不会影响已建立的连接。

      • cacerts

        类型Boolean
        描述

        Deprecated since 5.1.4.

      • certfile

        类型String
        描述

        PEM 格式证书链文件
        此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

      • keyfile

        类型String
        描述

        PEM 格式的私钥文件。

      • verify

        类型Enum(verify_peer,verify_none)
        默认值verify_none
        描述

        启用或禁用对等验证。

      • reuse_sessions

        类型Boolean
        默认值true
        描述

        启用 TLS 会话重用。

      • depth

        类型Integer(0..+inf)
        默认值10
        描述

        在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
        如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
        如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

      • password

        类型String
        描述

        包含用户密码的字符串。仅在私钥文件受密码保护时使用。

      • versions

        类型Array(String)
        默认值["tlsv1.3", "tlsv1.2"]
        描述

        支持所有 TLS/DTLS 版本
        注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

      • ciphers

        类型Array(String)
        默认值[]
        描述

        此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
        密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

        名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
        注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

        例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


        注:PSK 的 Ciphers 不支持 tlsv1.3
        如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
        PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
      • secure_renegotiate

        类型Boolean
        默认值true
        描述

        指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
        如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
        当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

      • log_level

        类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
        默认值notice
        描述

        允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

      • hibernate_after

        类型Duration
        默认值"5s"
        描述

        指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • enable

        类型Boolean
        默认值false
        描述

        启用 TLS。

      • server_name_indication

        类型OneOf(String("disable"),String)
        描述

        指定要在 TLS 服务器名称指示扩展中使用的主机名。
        例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
        如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
        然后,主机名也用于对等机的主机名验证证书
        特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

    • pool_size

      类型Integer(1..+inf)
      默认值8
      描述

      连接池大小。

    • connect_timeout

      类型Duration
      默认值"15s"
      描述

      连接到 HTTP 服务器的超时时间。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • max_retries

      类型Integer(0..+inf)
      描述

      Deprecated since 5.0.4.

    • enable_pipelining

      类型Integer(1..+inf)
      默认值100
      描述

      一个正整数。是否连续发送 HTTP 请求,当设置为1时,意味着在发送每个 HTTP 请求后,需要等待服务器返回,然后继续发送下一个请求。

    • retry_interval

      类型Duration
      描述

      Deprecated since 5.0.4.
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    jwt_hmac

    • algorithm

      类型Enum(hmac-based)
      描述

      JWT 签名算法,支持 HMAC (配置为 hmac-based)和 RSA、ECDSA (配置为 public-key)。

    • secret

      类型String
      描述

      使用 HMAC 算法时用于验证 JWT 的密钥

    • secret_base64_encoded

      类型Boolean
      默认值false
      描述

      密钥是否为 base64 编码。

    • mechanism

      类型String("jwt")
      描述

      认证方式。

    • acl_claim_name

      类型String
      默认值acl
      描述

      用于获取 ACL 规则的 JWT 声明名称。

    • verify_claims

      类型Map
      默认值[]
      描述

      需要验证的自定义声明列表,是一个由名称/值对组成的列表。指定一个键(Key)来查找 JWT 中对应的声明(Claim),并提供一个预期值(Expected Value)来与声明的实际值进行比较,以确保只有满足特定条件的 JWT 才能被接受和使用。 例如要求 JWT 中的特定声明(如 clientid)的值必须与当前连接的客户端 ID 相匹配。 预期值可以使用以下占位符:

      • ${username}: 将在运行时被替换为客户端连接时使用的用户名
      • ${clientid}: 将在运行时被替换为客户端连接时使用的客户端 ID 身份认证将确认 JWT 中的声明值(从密码字段中获取)与 verify_claims 中要求的内容是否匹配。
    • disconnect_after_expire

      类型Boolean
      默认值true
      描述

      在 token 过期后断开客户端连接。

    • from

      类型Enum(username,password)
      默认值password
      描述

      指定客户端连接请求中 JWT 的位置。

    • enable

      类型Boolean
      默认值true
      描述

      设为 truefalse 以禁用此认证数据源。

    jwt_public_key

    • algorithm

      类型Enum(public-key)
      描述

      JWT 签名算法,支持 HMAC (配置为 hmac-based)和 RSA、ECDSA (配置为 public-key)。

    • public_key

      类型String
      描述

      用于验证 JWT 的公钥。

    • mechanism

      类型String("jwt")
      描述

      认证方式。

    • acl_claim_name

      类型String
      默认值acl
      描述

      用于获取 ACL 规则的 JWT 声明名称。

    • verify_claims

      类型Map
      默认值[]
      描述

      需要验证的自定义声明列表,是一个由名称/值对组成的列表。指定一个键(Key)来查找 JWT 中对应的声明(Claim),并提供一个预期值(Expected Value)来与声明的实际值进行比较,以确保只有满足特定条件的 JWT 才能被接受和使用。 例如要求 JWT 中的特定声明(如 clientid)的值必须与当前连接的客户端 ID 相匹配。 预期值可以使用以下占位符:

      • ${username}: 将在运行时被替换为客户端连接时使用的用户名
      • ${clientid}: 将在运行时被替换为客户端连接时使用的客户端 ID 身份认证将确认 JWT 中的声明值(从密码字段中获取)与 verify_claims 中要求的内容是否匹配。
    • disconnect_after_expire

      类型Boolean
      默认值true
      描述

      在 token 过期后断开客户端连接。

    • from

      类型Enum(username,password)
      默认值password
      描述

      指定客户端连接请求中 JWT 的位置。

    • enable

      类型Boolean
      默认值true
      描述

      设为 truefalse 以禁用此认证数据源。

    jwt_jwks

    • use_jwks

      类型Enum(true)
      描述

      是否使用 JWKS。

    • endpoint

      类型String
      描述

      JWKS 端点, 它是一个以 JWKS 格式返回服务端的公钥集的只读端点。

    • headers

      类型Map
      默认值{Accept = "application/json"}
      描述

      发送 JWKS 请求时要附带的 HTTP 请求头列表。

    • pool_size

      类型Integer(1..+inf)
      默认值8
      描述

      桥接远端服务时使用的连接池大小。

    • refresh_interval

      类型Integer
      默认值300
      描述

      JWKS 刷新间隔。

    • ssl

      类型Struct(ssl_client_opts)
      默认值{enable = false}
      描述

      SSL 选项。

      ssl_client_opts

      • cacertfile

        类型String
        描述

        受信任的 PEM 格式 CA 证书捆绑文件
        此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
        注意:从文件中失效(删除)证书不会影响已建立的连接。

      • cacerts

        类型Boolean
        描述

        Deprecated since 5.1.4.

      • certfile

        类型String
        描述

        PEM 格式证书链文件
        此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

      • keyfile

        类型String
        描述

        PEM 格式的私钥文件。

      • verify

        类型Enum(verify_peer,verify_none)
        默认值verify_none
        描述

        启用或禁用对等验证。

      • reuse_sessions

        类型Boolean
        默认值true
        描述

        启用 TLS 会话重用。

      • depth

        类型Integer(0..+inf)
        默认值10
        描述

        在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
        如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
        如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

      • password

        类型String
        描述

        包含用户密码的字符串。仅在私钥文件受密码保护时使用。

      • versions

        类型Array(String)
        默认值["tlsv1.3", "tlsv1.2"]
        描述

        支持所有 TLS/DTLS 版本
        注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

      • ciphers

        类型Array(String)
        默认值[]
        描述

        此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
        密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

        名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
        注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

        例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


        注:PSK 的 Ciphers 不支持 tlsv1.3
        如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
        PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
      • secure_renegotiate

        类型Boolean
        默认值true
        描述

        指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
        如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
        当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

      • log_level

        类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
        默认值notice
        描述

        允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

      • hibernate_after

        类型Duration
        默认值"5s"
        描述

        指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • enable

        类型Boolean
        默认值false
        描述

        启用 TLS。

      • server_name_indication

        类型OneOf(String("disable"),String)
        描述

        指定要在 TLS 服务器名称指示扩展中使用的主机名。
        例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
        如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
        然后,主机名也用于对等机的主机名验证证书
        特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

    • mechanism

      类型String("jwt")
      描述

      认证方式。

    • acl_claim_name

      类型String
      默认值acl
      描述

      用于获取 ACL 规则的 JWT 声明名称。

    • verify_claims

      类型Map
      默认值[]
      描述

      需要验证的自定义声明列表,是一个由名称/值对组成的列表。指定一个键(Key)来查找 JWT 中对应的声明(Claim),并提供一个预期值(Expected Value)来与声明的实际值进行比较,以确保只有满足特定条件的 JWT 才能被接受和使用。 例如要求 JWT 中的特定声明(如 clientid)的值必须与当前连接的客户端 ID 相匹配。 预期值可以使用以下占位符:

      • ${username}: 将在运行时被替换为客户端连接时使用的用户名
      • ${clientid}: 将在运行时被替换为客户端连接时使用的客户端 ID 身份认证将确认 JWT 中的声明值(从密码字段中获取)与 verify_claims 中要求的内容是否匹配。
    • disconnect_after_expire

      类型Boolean
      默认值true
      描述

      在 token 过期后断开客户端连接。

    • from

      类型Enum(username,password)
      默认值password
      描述

      指定客户端连接请求中 JWT 的位置。

    • enable

      类型Boolean
      默认值true
      描述

      设为 truefalse 以禁用此认证数据源。

    scram

    • mechanism

      类型String("scram")
      描述

      认证方式。

    • backend

      类型String("built_in_database")
      描述

      后端类型。

    • algorithm

      类型Enum(sha256,sha512)
      默认值sha256
      描述

      Hashing algorithm.

    • iteration_count

      类型Integer(0..+inf)
      默认值4096
      描述

      Iteration count.

    • enable

      类型Boolean
      默认值true
      描述

      设为 truefalse 以禁用此认证数据源。

    ldap

    • mechanism

      类型String("password_based")
      描述

      认证方式。

    • backend

      类型String("ldap")
      描述

      后端类型。

    • query_timeout

      类型Duration
      默认值"5s"
      描述

      LDAP 查询的超时时间。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • enable

      类型Boolean
      默认值true
      描述

      设为 truefalse 以禁用此认证数据源。

    • server

      类型String
      描述

      要连接的 IPv4 或 IPv6 地址或主机名。
      主机名条目的格式为:主机[:端口]
      如果 [:端口] 未指定, 将使用 LDAP 默认端口 389。

    • pool_size

      类型Integer(1..+inf)
      默认值8
      描述

      桥接远端服务时使用的连接池大小。

    • username

      类型String
      描述

      内部数据库的用户名。

    • password

      类型Secret
      描述

      内部数据库密码。
      包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

    • base_dn

      类型String
      描述

      与基本对象条目(或根)相关的名称。 搜索用户的起点。

    • filter

      类型String
      默认值"(objectClass=mqttUser)"
      描述

      定义哪些条件必须被依次满足的过滤器 用于搜索匹配一条给定的条目.
      筛选器的语法遵循 RFC 4515,并且还支持占位符。

    • request_timeout

      类型Duration
      默认值"10s"
      描述

      设置每个单独请求所使用的最大时间(以毫秒为单位)。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • ssl

      类型Struct(ssl)
      默认值{enable = false}
      描述

      启用 SSL 连接。

      ssl

      • cacertfile

        类型String
        描述

        受信任的 PEM 格式 CA 证书捆绑文件
        此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
        注意:从文件中失效(删除)证书不会影响已建立的连接。

      • cacerts

        类型Boolean
        描述

        Deprecated since 5.1.4.

      • certfile

        类型String
        描述

        PEM 格式证书链文件
        此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

      • keyfile

        类型String
        描述

        PEM 格式的私钥文件。

      • verify

        类型Enum(verify_peer,verify_none)
        默认值verify_none
        描述

        启用或禁用对等验证。

      • reuse_sessions

        类型Boolean
        默认值true
        描述

        启用 TLS 会话重用。

      • depth

        类型Integer(0..+inf)
        默认值10
        描述

        在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
        如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
        如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

      • password

        类型String
        描述

        包含用户密码的字符串。仅在私钥文件受密码保护时使用。

      • versions

        类型Array(String)
        默认值["tlsv1.3", "tlsv1.2"]
        描述

        支持所有 TLS/DTLS 版本
        注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

      • ciphers

        类型Array(String)
        默认值[]
        描述

        此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
        密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

        名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
        注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

        例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


        注:PSK 的 Ciphers 不支持 tlsv1.3
        如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
        PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
      • secure_renegotiate

        类型Boolean
        默认值true
        描述

        指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
        如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
        当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

      • log_level

        类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
        默认值notice
        描述

        允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

      • hibernate_after

        类型Duration
        默认值"5s"
        描述

        指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • enable

        类型Boolean
        默认值false
        描述

        启用 TLS。

      • server_name_indication

        类型OneOf(String("disable"),String)
        描述

        指定要在 TLS 服务器名称指示扩展中使用的主机名。
        例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
        如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
        然后,主机名也用于对等机的主机名验证证书
        特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

    • method

      类型OneOf(Struct(hash_method),Struct(bind_method))
      描述

      认证方式。

      hash_method

      • type

        类型Enum(hash)
        默认值hash
        描述

        认证方式类型。

      • password_attribute

        类型String
        默认值userPassword
        描述

        指示哪个属性用于表示用户密码。

      • is_superuser_attribute

        类型String
        默认值isSuperuser
        描述

        指示哪个属性用于表示用户是否为超级用户。

      bind_method

      • type

        类型Enum(bind)
        默认值bind
        描述

        认证方式类型。

      • bind_password

        类型String
        默认值"${password}"
        描述

        绑定密码的模版

    ldap_deprecated

    • mechanism

      类型String("password_based")
      描述

      认证方式。

    • backend

      类型String("ldap")
      描述

      后端类型。

    • query_timeout

      类型Duration
      默认值"5s"
      描述

      LDAP 查询的超时时间。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • enable

      类型Boolean
      默认值true
      描述

      设为 truefalse 以禁用此认证数据源。

    • server

      类型String
      描述

      要连接的 IPv4 或 IPv6 地址或主机名。
      主机名条目的格式为:主机[:端口]
      如果 [:端口] 未指定, 将使用 LDAP 默认端口 389。

    • pool_size

      类型Integer(1..+inf)
      默认值8
      描述

      桥接远端服务时使用的连接池大小。

    • username

      类型String
      描述

      内部数据库的用户名。

    • password

      类型Secret
      描述

      内部数据库密码。
      包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

    • base_dn

      类型String
      描述

      与基本对象条目(或根)相关的名称。 搜索用户的起点。

    • filter

      类型String
      默认值"(objectClass=mqttUser)"
      描述

      定义哪些条件必须被依次满足的过滤器 用于搜索匹配一条给定的条目.
      筛选器的语法遵循 RFC 4515,并且还支持占位符。

    • request_timeout

      类型Duration
      默认值"10s"
      描述

      设置每个单独请求所使用的最大时间(以毫秒为单位)。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • ssl

      类型Struct(ssl)
      默认值{enable = false}
      描述

      启用 SSL 连接。

      ssl

      • cacertfile

        类型String
        描述

        受信任的 PEM 格式 CA 证书捆绑文件
        此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
        注意:从文件中失效(删除)证书不会影响已建立的连接。

      • cacerts

        类型Boolean
        描述

        Deprecated since 5.1.4.

      • certfile

        类型String
        描述

        PEM 格式证书链文件
        此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

      • keyfile

        类型String
        描述

        PEM 格式的私钥文件。

      • verify

        类型Enum(verify_peer,verify_none)
        默认值verify_none
        描述

        启用或禁用对等验证。

      • reuse_sessions

        类型Boolean
        默认值true
        描述

        启用 TLS 会话重用。

      • depth

        类型Integer(0..+inf)
        默认值10
        描述

        在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
        如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
        如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

      • password

        类型String
        描述

        包含用户密码的字符串。仅在私钥文件受密码保护时使用。

      • versions

        类型Array(String)
        默认值["tlsv1.3", "tlsv1.2"]
        描述

        支持所有 TLS/DTLS 版本
        注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

      • ciphers

        类型Array(String)
        默认值[]
        描述

        此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
        密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

        名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
        注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

        例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


        注:PSK 的 Ciphers 不支持 tlsv1.3
        如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
        PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
      • secure_renegotiate

        类型Boolean
        默认值true
        描述

        指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
        如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
        当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

      • log_level

        类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
        默认值notice
        描述

        允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

      • hibernate_after

        类型Duration
        默认值"5s"
        描述

        指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • enable

        类型Boolean
        默认值false
        描述

        启用 TLS。

      • server_name_indication

        类型OneOf(String("disable"),String)
        描述

        指定要在 TLS 服务器名称指示扩展中使用的主机名。
        例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
        如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
        然后,主机名也用于对等机的主机名验证证书
        特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

    • password_attribute

      类型String
      默认值userPassword
      描述

      指示哪个属性用于表示用户密码。

    • is_superuser_attribute

      类型String
      默认值isSuperuser
      描述

      指示哪个属性用于表示用户是否为超级用户。

  • authorization

    类型Struct(authorization)
    描述

    授权(ACL)。EMQX 支持完整的客户端访问控制(ACL)。

    authorization

    • no_match

      类型Enum(allow,deny)
      默认值allow
      描述

      如果用户或客户端不匹配 ACL 规则,或者从可配置授权源(比如内置数据库、HTTP API 或 PostgreSQL 等。)内未找 到此类用户或客户端时,模式的认访问控制操作。 在“授权”中查找更多详细信息。

    • deny_action

      类型Enum(ignore,disconnect)
      默认值ignore
      描述

      授权检查拒绝操作时的操作。

    • cache

      类型Struct(authz_cache)

      authz_cache

      • enable

        类型Boolean
        默认值true
        描述

        启用或禁用授权缓存。

      • max_size

        类型Integer(1..1048576)
        默认值32
        描述

        缓存项的最大数量。

      • ttl

        类型Duration
        默认值"1m"
        描述

        缓存数据的生存时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • excludes

        类型Array(String)
        默认值[]
        描述

        排除主题列表,列表内的主题将不会生成授权缓存。

    • sources

      类型Array(OneOf(Struct(file),Struct(builtin_db),Struct(http_get),Struct(http_post),Struct(redis_single),Struct(redis_sentinel),Struct(redis_cluster),Struct(mysql),Struct(postgresql),Struct(mongo_single),Struct(mongo_rs),Struct(mongo_sharded),Struct(ldap)))
      默认值[{enable = true, path = "${EMQX_ETC_DIR}/acl.conf", type = file}]
      描述

      授权(ACL)数据提供者的数组。 它被设计为一个数组,而不是哈希映射,因此可以 将源按顺序排列形成访问控制链。

      在授权 '发布' 或 '订阅' 操作时,配置的 源会按顺序检查。在检查 ACL 源时, 如果未找到客户端(通过用户名或客户端 ID 标识), 则继续检查下一个源。一旦返回 '允许' 或 '拒绝' 决定, 立即停止检查。

      如果在任何源中都未找到客户端, 则应用 'authorization.no_match' 中配置的默认操作。

      注意: 源元素由它们的 '类型' 标识。 不允许配置两个或更多相同类型的源。

      file

      • type

        类型String("file")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设置为 truefalse 来禁用此 ACL 提供者

      • path

        类型String
        描述

        包含 ACL 规则的文件路径。 如果该文件在启动 EMQX 节点之前已经配置好, 只要 EMQX 有读取权限,它可以放置在任何位置。 即,EMQX 将把它视为只读。

        如果规则集是从 EMQX Dashboard 或 HTTP API 创建或更新的, 将创建一个新文件并放置在 EMQX 的 data_dir 中的 authz 子目录下, 旧文件将不再使用。

      builtin_db

      • type

        类型String("built_in_database")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设置为 truefalse 来禁用此 ACL 提供者

      http_get

      • type

        类型String("http")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设置为 truefalse 来禁用此 ACL 提供者

      • url

        类型String
        描述

        认证服务器地址

      • request_timeout

        类型String
        默认值"30s"
        描述

        HTTP 请求超时。

      • body

        类型Map($name->String)
        描述

        HTTP 请求体

      • connect_timeout

        类型Duration
        默认值"15s"
        描述

        连接到 HTTP 服务器的超时时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • max_retries

        类型Integer(0..+inf)
        描述

        Deprecated since 5.0.4.

      • retry_interval

        类型Duration
        描述

        Deprecated since 5.0.4.
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • pool_size

        类型Integer(1..+inf)
        默认值8
        描述

        连接池大小。

      • enable_pipelining

        类型Integer(1..+inf)
        默认值100
        描述

        一个正整数。是否连续发送 HTTP 请求,当设置为1时,意味着在发送每个 HTTP 请求后,需要等待服务器返回,然后继续发送下一个请求。

      • request

        类型Struct(request)
        描述

        配置 HTTP 请求参数。

        request

        • method
          类型String
          描述

          HTTP 请求方法。

        • path
          类型String
          描述

          URL 路径。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • body
          类型String
          描述

          HTTP 请求的主体。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • headers
          类型Map
          描述

          HTTP 请求头列表。

        • max_retries
          类型Integer(0..+inf)
          描述

          如果发送请求时出错,最大重试次数。

        • request_timeout
          类型Duration
          描述

          HTTP 请求超时时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • ssl

        类型Struct(ssl_client_opts)
        默认值{enable = false}
        描述

        启用 SSL 连接。

        ssl_client_opts

        • cacertfile
          类型String
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

        • server_name_indication
          类型OneOf(String("disable"),String)
          描述

          指定要在 TLS 服务器名称指示扩展中使用的主机名。
          例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
          如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
          然后,主机名也用于对等机的主机名验证证书
          特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

      • method

        类型String("get")
        描述

        HTTP 请求方法

      • headers

        类型Map
        默认值{accept = "application/json", cache-control = "no-cache", connection = "keep-alive", keep-alive = "timeout=30, max=1000"}
        描述

        HTTP Headers 列表 (无 content-type) 。

      http_post

      • type

        类型String("http")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设置为 truefalse 来禁用此 ACL 提供者

      • url

        类型String
        描述

        认证服务器地址

      • request_timeout

        类型String
        默认值"30s"
        描述

        HTTP 请求超时。

      • body

        类型Map($name->String)
        描述

        HTTP 请求体

      • connect_timeout

        类型Duration
        默认值"15s"
        描述

        连接到 HTTP 服务器的超时时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • max_retries

        类型Integer(0..+inf)
        描述

        Deprecated since 5.0.4.

      • retry_interval

        类型Duration
        描述

        Deprecated since 5.0.4.
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • pool_size

        类型Integer(1..+inf)
        默认值8
        描述

        连接池大小。

      • enable_pipelining

        类型Integer(1..+inf)
        默认值100
        描述

        一个正整数。是否连续发送 HTTP 请求,当设置为1时,意味着在发送每个 HTTP 请求后,需要等待服务器返回,然后继续发送下一个请求。

      • request

        类型Struct(request)
        描述

        配置 HTTP 请求参数。

        request

        • method
          类型String
          描述

          HTTP 请求方法。

        • path
          类型String
          描述

          URL 路径。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • body
          类型String
          描述

          HTTP 请求的主体。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • headers
          类型Map
          描述

          HTTP 请求头列表。

        • max_retries
          类型Integer(0..+inf)
          描述

          如果发送请求时出错,最大重试次数。

        • request_timeout
          类型Duration
          描述

          HTTP 请求超时时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • ssl

        类型Struct(ssl_client_opts)
        默认值{enable = false}
        描述

        启用 SSL 连接。

        ssl_client_opts

        • cacertfile
          类型String
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

        • server_name_indication
          类型OneOf(String("disable"),String)
          描述

          指定要在 TLS 服务器名称指示扩展中使用的主机名。
          例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
          如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
          然后,主机名也用于对等机的主机名验证证书
          特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

      • method

        类型String("post")
        描述

        HTTP 请求方法

      • headers

        类型Map
        默认值{accept = "application/json", cache-control = "no-cache", connection = "keep-alive", content-type = "application/json", keep-alive = "timeout=30, max=1000"}
        描述

        HTTP Headers 列表

      redis_single

      • type

        类型String("redis")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设置为 truefalse 来禁用此 ACL 提供者

      • server

        类型String
        描述

        将要连接的 IPv4 或 IPv6 地址,或者主机名。主机名具有以下形式:Host[:Port]。如果未指定 [:Port],则使用 Redis 默认端口 6379。

      • redis_type

        类型String("single")
        默认值single
        描述

        Single 模式。 当 Redis 服务器在 Single 模式下运行时必须设置为 'single' 。

      • pool_size

        类型Integer(1..+inf)
        默认值8
        描述

        桥接远端服务时使用的连接池大小。

      • username

        类型String
        描述

        内部数据库的用户名。

      • password

        类型Secret
        描述

        内部数据库密码。
        包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

      • database

        类型Integer(0..+inf)
        默认值0
        描述

        Redis 数据库 ID。

      • auto_reconnect

        类型Boolean
        描述

        Deprecated since v5.0.15.

      • ssl

        类型Struct(ssl_client_opts)
        默认值{enable = false}
        描述

        启用 SSL 连接。

        ssl_client_opts

        • cacertfile
          类型String
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

        • server_name_indication
          类型OneOf(String("disable"),String)
          描述

          指定要在 TLS 服务器名称指示扩展中使用的主机名。
          例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
          如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
          然后,主机名也用于对等机的主机名验证证书
          特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

      • cmd

        类型String
        描述

        用于检索授权数据的数据库查询。

      redis_sentinel

      • type

        类型String("redis")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设置为 truefalse 来禁用此 ACL 提供者

      • servers

        类型String
        描述

        集群将要连接的节点列表。 节点之间用逗号分隔,如:Node[,Node]。每个节点的配置为:将要连接的 IPv4 或 IPv6 地址或主机名。主机名具有以下形式:Host[:Port]。如果未指定 [:Port],则使用 Redis 默认端口 6379。

      • redis_type

        类型String("sentinel")
        默认值sentinel
        描述

        Sentinel 模式。 当 Redis 服务器在 Senitel 模式下运行时必须设置为 'sentinel' 。

      • sentinel

        类型String
        描述

        Redis sentinel 模式下的集群名称。

      • pool_size

        类型Integer(1..+inf)
        默认值8
        描述

        桥接远端服务时使用的连接池大小。

      • username

        类型String
        描述

        内部数据库的用户名。

      • password

        类型Secret
        描述

        内部数据库密码。
        包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

      • database

        类型Integer(0..+inf)
        默认值0
        描述

        Redis 数据库 ID。

      • auto_reconnect

        类型Boolean
        描述

        Deprecated since v5.0.15.

      • ssl

        类型Struct(ssl_client_opts)
        默认值{enable = false}
        描述

        启用 SSL 连接。

        ssl_client_opts

        • cacertfile
          类型String
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

        • server_name_indication
          类型OneOf(String("disable"),String)
          描述

          指定要在 TLS 服务器名称指示扩展中使用的主机名。
          例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
          如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
          然后,主机名也用于对等机的主机名验证证书
          特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

      • cmd

        类型String
        描述

        用于检索授权数据的数据库查询。

      redis_cluster

      • type

        类型String("redis")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设置为 truefalse 来禁用此 ACL 提供者

      • servers

        类型String
        描述

        集群将要连接的节点列表。 节点之间用逗号分隔,如:Node[,Node]。每个节点的配置为:将要连接的 IPv4 或 IPv6 地址或主机名。主机名具有以下形式:Host[:Port]。如果未指定 [:Port],则使用 Redis 默认端口 6379。

      • redis_type

        类型String("cluster")
        默认值cluster
        描述

        Cluster 模式。当 Redis 服务器在集群模式下运行时必须设置为'cluster'。

      • pool_size

        类型Integer(1..+inf)
        默认值8
        描述

        桥接远端服务时使用的连接池大小。

      • username

        类型String
        描述

        内部数据库的用户名。

      • password

        类型Secret
        描述

        内部数据库密码。
        包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

      • auto_reconnect

        类型Boolean
        描述

        Deprecated since v5.0.15.

      • ssl

        类型Struct(ssl_client_opts)
        默认值{enable = false}
        描述

        启用 SSL 连接。

        ssl_client_opts

        • cacertfile
          类型String
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

        • server_name_indication
          类型OneOf(String("disable"),String)
          描述

          指定要在 TLS 服务器名称指示扩展中使用的主机名。
          例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
          如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
          然后,主机名也用于对等机的主机名验证证书
          特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

      • cmd

        类型String
        描述

        用于检索授权数据的数据库查询。

      mysql

      • type

        类型String("mysql")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设置为 truefalse 来禁用此 ACL 提供者

      • server

        类型String
        描述

        用于连接的 IPv4 或 IPv6 地址或主机名。
        主机条目的格式如下:主机[:端口]。
        如果未指定[:端口],将使用 MySQL 的默认端口3306。

      • database

        类型String
        描述

        数据库名字。

      • pool_size

        类型Integer(1..+inf)
        默认值8
        描述

        桥接远端服务时使用的连接池大小。

      • username

        类型String
        默认值root
        描述

        内部数据库的用户名。

      • password

        类型Secret
        描述

        内部数据库密码。
        包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

      • auto_reconnect

        类型Boolean
        描述

        Deprecated since v5.0.15.

      • ssl

        类型Struct(ssl_client_opts)
        默认值{enable = false}
        描述

        启用 SSL 连接。

        ssl_client_opts

        • cacertfile
          类型String
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

        • server_name_indication
          类型OneOf(String("disable"),String)
          描述

          指定要在 TLS 服务器名称指示扩展中使用的主机名。
          例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
          如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
          然后,主机名也用于对等机的主机名验证证书
          特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

      • prepare_statement

        类型Map
        描述

        SQL 预处理语句列表。

      • query

        类型String
        描述

        用于检索授权数据的数据库查询。

      postgresql

      • type

        类型String("postgresql")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设置为 truefalse 来禁用此 ACL 提供者

      • server

        类型String
        描述

        要连接的 IPv4 或 IPv6 地址或主机名。
        一个主机条目的格式为:Host[:Port]。
        如果没有指定 [:Port],将使用 PostgreSQL 默认端口 5432。

      • disable_prepared_statements

        类型Boolean
        默认值false
        描述

        在连接中禁用预处理语句的使用。 某些端点,如 PGBouncer 或 Transaction 模式下的 Supabase, 不支持像处理语句这样的会话功能。 对于此类连接,应启用此选项。

      • database

        类型String
        描述

        数据库名字。

      • pool_size

        类型Integer(1..+inf)
        默认值8
        描述

        桥接远端服务时使用的连接池大小。

      • username

        类型String
        描述

        内部数据库的用户名。

      • password

        类型Secret
        描述

        内部数据库密码。
        包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

      • auto_reconnect

        类型Boolean
        描述

        Deprecated since v5.0.15.

      • ssl

        类型Struct(ssl_client_opts)
        默认值{enable = false}
        描述

        启用 SSL 连接。

        ssl_client_opts

        • cacertfile
          类型String
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

        • server_name_indication
          类型OneOf(String("disable"),String)
          描述

          指定要在 TLS 服务器名称指示扩展中使用的主机名。
          例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
          如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
          然后,主机名也用于对等机的主机名验证证书
          特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

      • prepare_statement

        类型Map
        描述

        SQL 预处理语句列表。

      • query

        类型String
        描述

        用于检索授权数据的数据库查询。

      mongo_single

      • type

        类型String("mongodb")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设置为 truefalse 来禁用此 ACL 提供者

      • collection

        类型String
        描述

        包含授权数据的 MongoDB 集合。

      • filter

        类型Map
        默认值{}
        描述

        定义查询中过滤条件的条件表达式。 过滤器支持以下占位符

        • ${username}:在连接时将用客户端使用的 用户名 替换
        • ${clientid}:在连接时将用客户端使用的 客户端 ID 替换
      • mongo_type

        类型String("single")
        默认值single
        描述

        独立实例。当MongoDB服务器以独立模式运行时,必须设置为single

      • server

        类型String
        描述

        要连接的 IPv4 或 IPv6 地址或主机名。
        主机条目具有以下形式:主机[:端口]。
        如果未指定[:端口],则使用MongoDB的默认端口27017。

      • w_mode

        类型Enum(unsafe,safe)
        默认值unsafe
        描述

        写入模式

      • srv_record

        类型Boolean
        默认值false
        描述

        使用 DNS SRV 记录。

      • pool_size

        类型Integer(1..+inf)
        默认值8
        描述

        桥接远端服务时使用的连接池大小。

      • username

        类型String
        描述

        内部数据库的用户名。

      • password

        类型Secret
        描述

        内部数据库密码。
        包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

      • use_legacy_protocol

        类型Enum(auto,true,false)
        默认值auto
        描述

        是否使用 MongoDB 的传统协议与数据库通信。默认情况下,将尝试自动确定是否支持较新的协议。

      • auth_source

        类型String
        描述

        与用户认证信息关联的数据库名称。

      • database

        类型String
        描述

        数据库名字。

      • topology

        类型Struct(topology)

        topology

        • max_overflow
          类型Integer(0..+inf)
          默认值0
          描述

          在池中的所有工作线程都繁忙时,可以创建的附加工作线程的最大数量。这有助于通过允许更多并发连接到 MongoDB 服务器来管理工作负载的暂时性波动。

        • overflow_ttl
          类型Duration
          描述

          超出配置的池大小("溢出")的工作线程在终止之前的时间段。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • overflow_check_period
          类型Duration
          描述

          检查是否存在多余工作线程("溢出")的周期。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • local_threshold_ms
          类型Duration
          描述

          用于在多个合适的 MongoDB 实例中进行选择的延迟窗口的大小。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • connect_timeout_ms
          类型Duration
          描述

          在超时之前尝试连接的持续时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • socket_timeout_ms
          类型Duration
          描述

          在套接字上尝试发送或接收超时之前的持续时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • server_selection_timeout_ms
          类型Duration
          描述

          指定在抛出异常之前进行服务器选择的阻塞时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • wait_queue_timeout_ms
          类型Duration
          描述

          工作线程等待连接可用的最长时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • heartbeat_frequency_ms
          类型Duration
          默认值"200s"
          描述

          控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • min_heartbeat_frequency_ms
          类型Duration
          描述

          控制心跳之间等待的最短时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • ssl

        类型Struct(ssl_client_opts)
        默认值{enable = false}
        描述

        启用 SSL 连接。

        ssl_client_opts

        • cacertfile
          类型String
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

        • server_name_indication
          类型OneOf(String("disable"),String)
          描述

          指定要在 TLS 服务器名称指示扩展中使用的主机名。
          例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
          如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
          然后,主机名也用于对等机的主机名验证证书
          特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

      mongo_rs

      • type

        类型String("mongodb")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设置为 truefalse 来禁用此 ACL 提供者

      • collection

        类型String
        描述

        包含授权数据的 MongoDB 集合。

      • filter

        类型Map
        默认值{}
        描述

        定义查询中过滤条件的条件表达式。 过滤器支持以下占位符

        • ${username}:在连接时将用客户端使用的 用户名 替换
        • ${clientid}:在连接时将用客户端使用的 客户端 ID 替换
      • mongo_type

        类型String("rs")
        默认值rs
        描述

        副本集。当MongoDB服务器以副本集模式运行时,必须设置为rs

      • servers

        类型String
        描述

        集群连接的节点列表。节点应使用逗号分隔,例如:节点[,节点]。 对于每个节点,应该是要连接的 IPv4 或 IPv6 地址或主机名。 主机条目具有以下形式:主机[:端口]。 如果未指定[:端口],则使用 MongoDB 的默认端口27017。

      • w_mode

        类型Enum(unsafe,safe)
        默认值unsafe
        描述

        写入模式

      • r_mode

        类型Enum(master,slave_ok)
        默认值master
        描述

        读取模式。

      • replica_set_name

        类型String
        描述

        副本集的名称。

      • srv_record

        类型Boolean
        默认值false
        描述

        使用 DNS SRV 记录。

      • pool_size

        类型Integer(1..+inf)
        默认值8
        描述

        桥接远端服务时使用的连接池大小。

      • username

        类型String
        描述

        内部数据库的用户名。

      • password

        类型Secret
        描述

        内部数据库密码。
        包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

      • use_legacy_protocol

        类型Enum(auto,true,false)
        默认值auto
        描述

        是否使用 MongoDB 的传统协议与数据库通信。默认情况下,将尝试自动确定是否支持较新的协议。

      • auth_source

        类型String
        描述

        与用户认证信息关联的数据库名称。

      • database

        类型String
        描述

        数据库名字。

      • topology

        类型Struct(topology)

        topology

        • max_overflow
          类型Integer(0..+inf)
          默认值0
          描述

          在池中的所有工作线程都繁忙时,可以创建的附加工作线程的最大数量。这有助于通过允许更多并发连接到 MongoDB 服务器来管理工作负载的暂时性波动。

        • overflow_ttl
          类型Duration
          描述

          超出配置的池大小("溢出")的工作线程在终止之前的时间段。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • overflow_check_period
          类型Duration
          描述

          检查是否存在多余工作线程("溢出")的周期。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • local_threshold_ms
          类型Duration
          描述

          用于在多个合适的 MongoDB 实例中进行选择的延迟窗口的大小。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • connect_timeout_ms
          类型Duration
          描述

          在超时之前尝试连接的持续时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • socket_timeout_ms
          类型Duration
          描述

          在套接字上尝试发送或接收超时之前的持续时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • server_selection_timeout_ms
          类型Duration
          描述

          指定在抛出异常之前进行服务器选择的阻塞时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • wait_queue_timeout_ms
          类型Duration
          描述

          工作线程等待连接可用的最长时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • heartbeat_frequency_ms
          类型Duration
          默认值"200s"
          描述

          控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • min_heartbeat_frequency_ms
          类型Duration
          描述

          控制心跳之间等待的最短时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • ssl

        类型Struct(ssl_client_opts)
        默认值{enable = false}
        描述

        启用 SSL 连接。

        ssl_client_opts

        • cacertfile
          类型String
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

        • server_name_indication
          类型OneOf(String("disable"),String)
          描述

          指定要在 TLS 服务器名称指示扩展中使用的主机名。
          例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
          如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
          然后,主机名也用于对等机的主机名验证证书
          特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

      mongo_sharded

      • type

        类型String("mongodb")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设置为 truefalse 来禁用此 ACL 提供者

      • collection

        类型String
        描述

        包含授权数据的 MongoDB 集合。

      • filter

        类型Map
        默认值{}
        描述

        定义查询中过滤条件的条件表达式。 过滤器支持以下占位符

        • ${username}:在连接时将用客户端使用的 用户名 替换
        • ${clientid}:在连接时将用客户端使用的 客户端 ID 替换
      • mongo_type

        类型String("sharded")
        默认值sharded
        描述

        分片集群。当 MongoDB 服务器以分片模式运行时,必须设置为sharded

      • servers

        类型String
        描述

        集群连接的节点列表。节点应使用逗号分隔,例如:节点[,节点]。 对于每个节点,应该是要连接的 IPv4 或 IPv6 地址或主机名。 主机条目具有以下形式:主机[:端口]。 如果未指定[:端口],则使用 MongoDB 的默认端口27017。

      • w_mode

        类型Enum(unsafe,safe)
        默认值unsafe
        描述

        写入模式

      • srv_record

        类型Boolean
        默认值false
        描述

        使用 DNS SRV 记录。

      • pool_size

        类型Integer(1..+inf)
        默认值8
        描述

        桥接远端服务时使用的连接池大小。

      • username

        类型String
        描述

        内部数据库的用户名。

      • password

        类型Secret
        描述

        内部数据库密码。
        包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

      • use_legacy_protocol

        类型Enum(auto,true,false)
        默认值auto
        描述

        是否使用 MongoDB 的传统协议与数据库通信。默认情况下,将尝试自动确定是否支持较新的协议。

      • auth_source

        类型String
        描述

        与用户认证信息关联的数据库名称。

      • database

        类型String
        描述

        数据库名字。

      • topology

        类型Struct(topology)

        topology

        • max_overflow
          类型Integer(0..+inf)
          默认值0
          描述

          在池中的所有工作线程都繁忙时,可以创建的附加工作线程的最大数量。这有助于通过允许更多并发连接到 MongoDB 服务器来管理工作负载的暂时性波动。

        • overflow_ttl
          类型Duration
          描述

          超出配置的池大小("溢出")的工作线程在终止之前的时间段。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • overflow_check_period
          类型Duration
          描述

          检查是否存在多余工作线程("溢出")的周期。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • local_threshold_ms
          类型Duration
          描述

          用于在多个合适的 MongoDB 实例中进行选择的延迟窗口的大小。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • connect_timeout_ms
          类型Duration
          描述

          在超时之前尝试连接的持续时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • socket_timeout_ms
          类型Duration
          描述

          在套接字上尝试发送或接收超时之前的持续时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • server_selection_timeout_ms
          类型Duration
          描述

          指定在抛出异常之前进行服务器选择的阻塞时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • wait_queue_timeout_ms
          类型Duration
          描述

          工作线程等待连接可用的最长时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • heartbeat_frequency_ms
          类型Duration
          默认值"200s"
          描述

          控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • min_heartbeat_frequency_ms
          类型Duration
          描述

          控制心跳之间等待的最短时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • ssl

        类型Struct(ssl_client_opts)
        默认值{enable = false}
        描述

        启用 SSL 连接。

        ssl_client_opts

        • cacertfile
          类型String
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

        • server_name_indication
          类型OneOf(String("disable"),String)
          描述

          指定要在 TLS 服务器名称指示扩展中使用的主机名。
          例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
          如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
          然后,主机名也用于对等机的主机名验证证书
          特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

      ldap

      • type

        类型String("ldap")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设置为 truefalse 来禁用此 ACL 提供者

      • publish_attribute

        类型String
        默认值mqttPublishTopic
        描述

        表示使用哪个属性来表示允许发布的主题列表。

      • subscribe_attribute

        类型String
        默认值mqttSubscriptionTopic
        描述

        表示使用哪个属性来表示允许订阅的主题列表。

      • all_attribute

        类型String
        默认值mqttPubSubTopic
        描述

        表示使用哪个属性来表示允许发布订阅的主题列表。

      • query_timeout

        类型Duration
        默认值"5s"
        描述

        LDAP 查询超时。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • server

        类型String
        描述

        要连接的 IPv4 或 IPv6 地址或主机名。
        主机名条目的格式为:主机[:端口]
        如果 [:端口] 未指定, 将使用 LDAP 默认端口 389。

      • pool_size

        类型Integer(1..+inf)
        默认值8
        描述

        桥接远端服务时使用的连接池大小。

      • username

        类型String
        描述

        内部数据库的用户名。

      • password

        类型Secret
        描述

        内部数据库密码。
        包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

      • base_dn

        类型String
        描述

        与基本对象条目(或根)相关的名称。 搜索用户的起点。

      • filter

        类型String
        默认值"(objectClass=mqttUser)"
        描述

        定义哪些条件必须被依次满足的过滤器 用于搜索匹配一条给定的条目.
        筛选器的语法遵循 RFC 4515,并且还支持占位符。

      • request_timeout

        类型Duration
        默认值"10s"
        描述

        设置每个单独请求所使用的最大时间(以毫秒为单位)。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • ssl

        类型Struct(ssl)
        默认值{enable = false}
        描述

        启用 SSL 连接。

        ssl

        • cacertfile
          类型String
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

        • server_name_indication
          类型OneOf(String("disable"),String)
          描述

          指定要在 TLS 服务器名称指示扩展中使用的主机名。
          例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
          如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
          然后,主机名也用于对等机的主机名验证证书
          特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

  • node

    类型Struct(node)

    node

    • name

      类型String
      默认值"emqx@127.0.0.1"
      描述

      节点名。格式为 <name>@<host>。其中 可以是 IP 地址,也可以是 FQDN。 详见 http://erlang.org/doc/reference_manual/distributed.html。

    • 类型String
      描述

      分布式 Erlang 集群使用的 cookie 值。集群间保持一致

    • max_ports

      类型Integer(1024..134217727)
      默认值1048576
      描述

      Erlang 系统同时存在的最大端口数。 实际选择的最大值可能比设置的数字大得多。 参考: https://www.erlang.org/doc/man/erl.html

    • dist_buffer_size

      类型Integer(1..2097151)
      默认值8192
      描述

      Erlang 分布式缓冲区的繁忙阈值,单位是 KB。

    • data_dir

      类型String
      描述

      节点数据存放目录,可能会自动创建的子目录如下:

      • mnesia/<node_name>。EMQX 的内置数据库目录。例如,mnesia/emqx@127.0.0.1
        如果节点要被重新命名(例如,emqx@10.0.1.1)。旧目录应该首先被删除。
      • configs。在启动时生成的配置,以及集群/本地覆盖的配置。
      • patches: 热补丁文件将被放在这里。
      • trace: 日志跟踪文件。

      注意: 一个数据 dir 不能被两个或更多的 EMQX 节点同时使用。

    • global_gc_interval

      类型OneOf(String("disabled"),Duration)
      默认值"15m"
      描述

      系统调优参数,设置节点运行多久强制进行一次全局垃圾回收。禁用设置为 disabled

    • role

      别名db_role
      类型Enum(core,replicant)
      默认值core
      描述

      选择节点的角色。
      core 节点提供数据的持久性,并负责写入。建议将核心节点放置在不同的机架或不同的可用区。
      repliant 节点是临时工作节点。 从集群中删除它们,不影响数据库冗余
      建议复制节点多于核心节点。
      注意:该参数仅在设置backend时生效到 rlog

  • cluster

    类型Struct(cluster)

    cluster

    • name

      类型String
      默认值emqxcl
      描述

      EMQX 集群名称。每个集群都有一个唯一的名称。服务发现时会用于做路径的一部分。

    • discovery_strategy

      类型Enum(manual,static,dns,etcd,k8s)
      默认值manual
      描述

      集群节点发现方式。可选值为:

      • manual: 使用 emqx ctl cluster 命令管理集群。
      • static: 配置静态节点。配置几个固定的节点,新节点通过连接固定节点中的某一个来加入集群。
      • dns: 使用 DNS A 记录的方式发现节点。
      • etcd: 使用 etcd 发现节点。
      • k8s: 使用 Kubernetes API 发现节点。
    • autoclean

      类型Duration
      默认值"24h"
      描述

      指定多久之后从集群中删除离线节点。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • autoheal

      类型Boolean
      默认值true
      描述

      集群脑裂自动恢复机制开关。

    • proto_dist

      类型Enum(inet_tcp,inet6_tcp,inet_tls,inet6_tls)
      默认值inet_tcp
      描述

      分布式 Erlang 集群协议类型。可选值为:

      • inet_tcp: 使用 IPv4
      • inet_tls: 使用 TLS,需要配合 etc/ssl_dist.conf 一起使用。
      • inet6_tcp: IPv6 TCP
      • inet6_tls: IPv6 TLS, 与 etc/ssl_dist.conf 配合使用。
    • static

      类型Struct(cluster_static)

      cluster_static

      • seeds

        类型OneOf(String,Array(String))
        默认值[]
        描述

        集群中的 EMQX 节点名称列表, 指定固定的节点列表,多个节点间使用逗号 , 分隔。 当 cluster.discovery_strategy 为 static 时,此配置项才有效。 适合于节点数量较少且固定的集群。

    • dns

      类型Struct(cluster_dns)

      cluster_dns

      • name

        类型String
        默认值localhost
        描述

        指定 DNS A 记录的名字。emqx 会通过访问这个 DNS A 记录来获取 IP 地址列表。 当cluster.discovery_strategydns 时有效。

      • record_type

        类型Enum(a,aaaa,srv)
        默认值a
        描述

        DNS 记录类型。

    • etcd

      类型Struct(cluster_etcd)

      cluster_etcd

      • server

        类型String
        描述

        指定 etcd 服务的地址。如有多个服务使用逗号 , 分隔。 当 cluster.discovery_strategy 为 etcd 时,此配置项才有效。

      • prefix

        类型String
        默认值emqxcl
        描述

        指定 etcd 路径的前缀。每个节点在 etcd 中都会创建一个路径: v2/keys//<cluster.name>/<node.name>
        当 cluster.discovery_strategy 为 etcd 时,此配置项才有效。

      • node_ttl

        类型Duration
        默认值"1m"
        描述

        指定 etcd 中节点信息的过期时间。 当 cluster.discovery_strategy 为 etcd 时,此配置项才有效。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • ssl_options

        别名ssl
        类型Struct(ssl_client_opts)
        描述

        当使用 TLS 连接 etcd 时的配置选项。 当 cluster.discovery_strategy 为 etcd 时,此配置项才有效。

        ssl_client_opts

        • cacertfile
          类型String
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

        • server_name_indication
          类型OneOf(String("disable"),String)
          描述

          指定要在 TLS 服务器名称指示扩展中使用的主机名。
          例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
          如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
          然后,主机名也用于对等机的主机名验证证书
          特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

    • k8s

      类型Struct(cluster_k8s)

      cluster_k8s

      • apiserver

        类型String
        默认值"https://kubernetes.default.svc:443"
        描述

        指定 Kubernetes API Server。如有多个 Server 使用逗号 , 分隔。 当 cluster.discovery_strategy 为 k8s 时,此配置项才有效。

      • service_name

        类型String
        默认值emqx
        描述

        指定 Kubernetes 中 EMQX 的服务名。 当 cluster.discovery_strategy 为 k8s 时,此配置项才有效。

      • address_type

        类型Enum(ip,dns,hostname)
        默认值ip
        描述

        当使用 k8s 方式集群时,address_type 用来从 Kubernetes 接口的应答里获取什么形式的 Host 列表。 指定 cluster.k8s.address_typeip,则将从 Kubernetes 接口中获取集群中其他节点 的 IP 地址。

      • namespace

        类型String
        默认值default
        描述

        当使用 k8s 方式并且 cluster.k8s.address_type 指定为 dns 类型时, 可设置 emqx 节点名的命名空间。与 cluster.k8s.suffix 一起使用用以拼接得到节点名列表。

      • suffix

        类型String
        默认值"pod.local"
        描述

        当使用 k8s 方式并且 cluster.k8s.address_type 指定为 dns 类型时,可设置 emqx 节点名的后缀。 与 cluster.k8s.namespace 一起使用用以拼接得到节点名列表。

  • log

    类型Struct(log)
    描述

    EMQX 支持两种主要的日志处理进程:file 和 console,另有一个专门设计用于始终将日志定向到文件的 audit 处理进程。 系统的默认日志处理行为可以通过环境变量 EMQX_DEFAULT_LOG_HANDLER 配置,它接受以下设置:

    • file:将日志输出仅定向到文件。
    • console:将日志输出仅定向到控制台。

    值得注意的是,当通过 systemd 的 emqx.service 文件启动 EMQX 时,EMQX_DEFAULT_LOG_HANDLER 被设置为 file。 在 systemd 启动之外的场景中,console 作为默认的日志处理进程。

    log

    • console

      别名console_handler
      类型Struct(console_handler)

      console_handler

      • level

        类型Enum(debug,info,notice,warning,error,critical,alert,emergency,all)
        默认值warning
        描述

        当前日志处理进程的日志级别。 默认为 warning 级别。

      • enable

        类型Boolean
        默认值false
        描述

        启用此日志处理进程。

      • formatter

        别名format
        类型Enum(text,json)
        默认值text
        描述

        选择日志格式类型。 text 用于纯文本,json 用于结构化日志记录。

      • timestamp_format

        类型Enum(auto,epoch,rfc3339)
        默认值auto
        描述

        选择时间戳格式:

        • auto:自动选择最佳格式。日志为 text 纯文本格式时使用 epoch,日志为 JSON 格式时使用 rfc3339rfc3339 为自由文本格式。
        • epoch: 微秒精度的 Unix epoch 整形值。
        • rfc3339: 遵从 RFC3339 规范的字符串格式。
      • time_offset

        类型String
        默认值system
        描述

        日志中的时间戳使用的时间偏移量。 可选值为:

        • system: 本地系统使用的时区偏移量
        • utc: 0 时区的偏移量
        • +-[hh]:[mm]: 自定义偏移量,比如 "-02:00" 或者 "+00:00" 默认值为本地系统的时区偏移量:system
    • file

      别名file_handlers
      类型OneOf(Struct(log_file_handler),Map($handler_name->Struct(log_file_handler)))
      默认值{level = warning}
      描述

      输出到文件的日志处理进程列表

      log_file_handler

      • path

        别名file, to
        类型String
        默认值"${EMQX_LOG_DIR}/emqx.log"
        描述

        日志文件路径及名字。

      • rotation_count

        别名rotation
        类型Integer(1..128)
        默认值10
        描述

        轮换的最大日志文件数。

      • rotation_size

        别名max_size
        类型OneOf(String("infinity"),Bytesize)
        默认值"50MB"
        描述

        此参数控制日志文件轮换。 infinity 意味着日志文件将无限增长,否则日志文件将在达到 max_size(以字节为单位)时进行轮换。 与 rotation count 配合使用。如果 counter 为 10,则是 10 个文件轮换。

      • level

        类型Enum(debug,info,notice,warning,error,critical,alert,emergency,all)
        默认值warning
        描述

        当前日志处理进程的日志级别。 默认为 warning 级别。

      • enable

        类型Boolean
        默认值true
        描述

        启用此日志处理进程。

      • formatter

        别名format
        类型Enum(text,json)
        默认值text
        描述

        选择日志格式类型。 text 用于纯文本,json 用于结构化日志记录。

      • timestamp_format

        类型Enum(auto,epoch,rfc3339)
        默认值auto
        描述

        选择时间戳格式:

        • auto:自动选择最佳格式。日志为 text 纯文本格式时使用 epoch,日志为 JSON 格式时使用 rfc3339rfc3339 为自由文本格式。
        • epoch: 微秒精度的 Unix epoch 整形值。
        • rfc3339: 遵从 RFC3339 规范的字符串格式。
      • time_offset

        类型String
        默认值system
        描述

        日志中的时间戳使用的时间偏移量。 可选值为:

        • system: 本地系统使用的时区偏移量
        • utc: 0 时区的偏移量
        • +-[hh]:[mm]: 自定义偏移量,比如 "-02:00" 或者 "+00:00" 默认值为本地系统的时区偏移量:system

      log_file_handler

      • path

        别名file, to
        类型String
        默认值"${EMQX_LOG_DIR}/emqx.log"
        描述

        日志文件路径及名字。

      • rotation_count

        别名rotation
        类型Integer(1..128)
        默认值10
        描述

        轮换的最大日志文件数。

      • rotation_size

        别名max_size
        类型OneOf(String("infinity"),Bytesize)
        默认值"50MB"
        描述

        此参数控制日志文件轮换。 infinity 意味着日志文件将无限增长,否则日志文件将在达到 max_size(以字节为单位)时进行轮换。 与 rotation count 配合使用。如果 counter 为 10,则是 10 个文件轮换。

      • level

        类型Enum(debug,info,notice,warning,error,critical,alert,emergency,all)
        默认值warning
        描述

        当前日志处理进程的日志级别。 默认为 warning 级别。

      • enable

        类型Boolean
        默认值true
        描述

        启用此日志处理进程。

      • formatter

        别名format
        类型Enum(text,json)
        默认值text
        描述

        选择日志格式类型。 text 用于纯文本,json 用于结构化日志记录。

      • timestamp_format

        类型Enum(auto,epoch,rfc3339)
        默认值auto
        描述

        选择时间戳格式:

        • auto:自动选择最佳格式。日志为 text 纯文本格式时使用 epoch,日志为 JSON 格式时使用 rfc3339rfc3339 为自由文本格式。
        • epoch: 微秒精度的 Unix epoch 整形值。
        • rfc3339: 遵从 RFC3339 规范的字符串格式。
      • time_offset

        类型String
        默认值system
        描述

        日志中的时间戳使用的时间偏移量。 可选值为:

        • system: 本地系统使用的时区偏移量
        • utc: 0 时区的偏移量
        • +-[hh]:[mm]: 自定义偏移量,比如 "-02:00" 或者 "+00:00" 默认值为本地系统的时区偏移量:system
    • throttling

      类型Struct(log_throttling)

      log_throttling

      • time_window

        类型Duration(s)
        默认值"1m"
        描述

        此配置设置控制限流消息的日志记录行为,包括但不限于像 'authorization_permission_denied' 这样的消息。 在每个定义的时间窗口内,只有一个限流消息的实例会被记录,以防止日志泛滥。 在每个时间窗口结束时,将生成一个摘要日志,详细说明该期间内任何限流消息的发生。 重要的是,此设置的最短有效时间窗口为 1 秒(1s)。 如果指定的值低于 1s,则会自动调整为 1s。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

  • rpc

    类型Struct(rpc)

    rpc

    • mode

      类型Enum(sync,async)
      默认值async
      描述

      sync 模式下,发送端等待接收端的 ack 信号。

    • protocol

      别名driver
      类型Enum(tcp,ssl)
      默认值tcp
      描述

      集群间通信使用的传输协议。

    • async_batch_size

      类型Integer
      默认值256
      描述

      异步模式下,发送的批量消息的最大数量。

    • port_discovery

      类型Enum(manual,stateless)
      默认值stateless
      描述

      manual: 通过 tcp_server_port 来发现端口。
      stateless: 使用无状态的方式来发现端口,使用如下算法。如果节点名称是 emqxN@127.0.0.1, N 是一个数字,那么监听端口就是 5370 + N。

    • tcp_server_port

      类型Integer
      默认值5369
      描述

      RPC 本地服务使用的 TCP 端口。
      只有当 rpc.port_discovery 设置为 manual 时,此配置才会生效。

    • ssl_server_port

      类型Integer
      默认值5369
      描述

      RPC 本地服务使用的监听 SSL 端口。
      只有当 rpc.port_discovery 设置为 manual 且 rpc.driver 设置为 ssl, 此配置才会生效。

    • tcp_client_num

      类型Integer(1..256)
      默认值10
      描述

      设置本节点与远程节点之间的 RPC 通信通道的最大数量。

    • connect_timeout

      类型Duration
      默认值"5s"
      描述

      建立 RPC 连接的超时时间。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • certfile

      类型String
      描述

      TLS 证书文件的路径,用于验证集群节点的身份。 只有当 rpc.driver 设置为 ssl 时,此配置才会生效。

    • keyfile

      类型String
      描述

      rpc.certfile 的私钥文件的路径。
      注意:此文件内容是私钥,所以需要设置权限为 600。

    • cacertfile

      类型String
      描述

      验证 rpc.certfile 的 CA 证书文件的路径。
      注意:集群中所有节点的证书必须使用同一个 CA 签发。

    • send_timeout

      类型Duration
      默认值"5s"
      描述

      发送 RPC 请求的超时时间。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • authentication_timeout

      类型Duration
      默认值"5s"
      描述

      远程节点认证的超时时间。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • call_receive_timeout

      类型Duration
      默认值"15s"
      描述

      同步 RPC 的回复超时时间。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • socket_keepalive_idle

      类型Duration(s)
      默认值"15m"
      描述

      对应 TCP_KEEPIDLE 套接字选项,用于指定在 TCP 开始发送保活探测之前连接需要保持空闲的时间。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • socket_keepalive_interval

      类型Duration(s)
      默认值"75s"
      描述

      对应 TCP_KEEPINTVL 套接字选项,用于指定各个保活探测之前的时间。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • socket_keepalive_count

      类型Integer
      默认值9
      描述

      对应 TCP_KEEPCNT 套接字选项,用于指定在没有从对端获得响应时,TCP 在断开连接之前应发送的保活探测的最大数量。

    • socket_sndbuf

      类型Bytesize
      默认值"1MB"
      描述

      TCP 调节参数。TCP 发送缓冲区大小。
      表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

    • socket_recbuf

      类型Bytesize
      默认值"1MB"
      描述

      TCP 调节参数。TCP 接收缓冲区大小。
      表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

    • socket_buffer

      类型Bytesize
      默认值"1MB"
      描述

      TCP 调节参数。用户模式套接字缓冲区大小。
      表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

    • insecure_fallback

      类型Boolean
      默认值true
      描述

      兼容旧的无鉴权模式

    • ciphers

      类型Array(String)
      默认值[]
      描述

      此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
      密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

      名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
      注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

      例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


      注:PSK 的 Ciphers 不支持 tlsv1.3
      如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
      PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
    • tls_versions

      类型Array(String)
      默认值["tlsv1.3", "tlsv1.2"]
      描述

      支持所有 TLS/DTLS 版本
      注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

    • listen_address

      类型String
      默认值"0.0.0.0"
      描述

      指示 RPC 服务器监听的 IP 地址。例如,使用 "0.0.0.0" 表示 IPv4 或 "::" 表示 IPv6。

    • ipv6_only

      类型Boolean
      默认值false
      描述

      此设置仅在 rpc.listen_address 被分配了一个 IPv6 地址时有效。 如果设置为 true,RPC 客户端将仅使用 IPv6 进行连接。 否则,即使服务器位于 IPv6 上,客户端也可能选择 IPv4。

  • sys_topics

    类型Struct(sys_topics)
    描述

    系统主题配置。

    sys_topics

    • sys_msg_interval

      类型OneOf(String("disabled"),Duration)
      默认值"1m"
      描述

      $SYS 主题发送系统消息的时间间隔。

    • sys_heartbeat_interval

      类型OneOf(String("disabled"),Duration)
      默认值"30s"
      描述

      发送心跳系统消息的间隔时间,它包括:

      • $SYS/brokers/<node>/uptime
      • $SYS/brokers/<node>/datetime
    • sys_event_messages

      类型Struct(event_names)
      描述

      客户端事件消息。

      event_names

      • client_connected

        类型Boolean
        默认值true
        描述

        是否开启客户端已连接事件消息。

      • client_disconnected

        类型Boolean
        默认值true
        描述

        是否开启客户端已断开连接事件消息。

      • client_subscribed

        类型Boolean
        默认值false
        描述

        是否开启客户端已成功订阅主题事件消息。

      • client_unsubscribed

        类型Boolean
        默认值false
        描述

        是否开启客户端已成功取消订阅主题事件消息。

  • force_shutdown

    类型Struct(force_shutdown)

    force_shutdown

    • enable

      类型Boolean
      默认值true
      描述

      启用 force_shutdown 功能。

    • max_mailbox_size

      别名max_message_queue_len
      类型Integer(0..inf)
      默认值1000
      描述

      EMQX 会为每个客户端连接创建至少一个轻量级的进程,每个进程都有自己的消息队列(又称邮箱)存放来自其他进程的消息(例如 MQTT 消息),以便进程在任一时间从消息队列(邮箱)中读取消息。如果系统繁忙或进程因套接字繁忙(见 high_watermark)挂起,消息队列可能堆积大量消息。为了避免占用过多内存,当进程消息队列的长度超过 max_mailbox_size 时,EMQX 将强制关闭该进程。

    • max_heap_size

      类型Bytesize
      默认值"32MB"
      描述

      进程的最大堆大小,如果启用了 force_shutdown 功能,那么超过此限制的进程将主动退出或被强制 kill。进程消息队列(邮箱)中的消息也是堆的一部分。进程的关闭分为以下两种情况:
      - 进程在自己运行间隙主动检查当前堆大小,发现超过限制后主动退出。
      - 底层调度系统为进程执行垃圾回收后检查当前堆大小,发现超过限制后强制 kill 该进程。

      注:以上两者产生的 Error 日志也会有所不同,前者产生的日志类似于 ...errorContext: connection_shutdown, reason: #{max => 2097152, reason => proc_heap_too_large, value => 2787348}..,后者产生的日志类似于 ...Context: maximum heap size reached...
      表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

  • durable_storage

    类型Struct(durable_storage)
    描述

    与 EMQX 持久存储相关的配置。

    EMQX 使用持久存储来卸载各种数据到磁盘,如 MQTT 消息。

    durable_storage

    • messages

      类型OneOf(Struct(builtin))
      默认值{backend = builtin}
      描述

      与 MQTT 消息的持久存储相关的配置。

      builtin

      • backend

        类型String("builtin")
        默认值builtin
        描述

        内置后端

      • data_dir

        类型String
        描述

        数据库所在的文件系统目录。

        默认情况下,它等于 node.data_dir。

      • n_shards

        类型Integer(1..+inf)
        默认值12
        描述

        内置的持久存储将数据分成多个分片。 此配置参数定义分片的数量。 请注意,它仅在持久存储数据库初始化期间生效。 在数据库已经创建后更改此配置参数将不会产生任何效果。

      • layout

        类型OneOf(Struct(layout_builtin_wildcard_optimized),Struct(layout_builtin_reference))
        默认值{type = wildcard_optimized}
        描述

        存储布局是一种在磁盘上排列来自各种主题和客户端消息的方法。

        根据工作负载类型和主题结构的不同,可以采用不同的数据存储策略,以最大化地提高从持久存储中读取消息的效率。

        layout_builtin_wildcard_optimized

        • type
          类型String("wildcard_optimized")
          默认值wildcard_optimized
          描述

          通配符优化布局类型。

        layout_builtin_reference

        • type
          类型String("reference")
          描述

          参考布局类型

  • force_gc

    类型Struct(force_gc)

    force_gc

    • enable

      类型Boolean
      默认值true
      描述

      启用强制垃圾回收。

    • count

      类型Integer(0..inf)
      默认值16000
      描述

      在进程收到多少消息之后,对此进程执行垃圾回收。

    • bytes

      类型Bytesize
      默认值"16MB"
      描述

      在进程处理过多少个字节之后,对此进程执行垃圾回收。
      表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

  • sysmon

    类型Struct(sysmon)

    sysmon

    • vm

      类型Struct(sysmon_vm)

      sysmon_vm

      • process_check_interval

        类型Duration
        默认值"30s"
        描述

        执行进程数量检查的时间间隔,需要与 process_high_watermarkprocess_low_watermark 一起使用。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • process_high_watermark

        类型String
        默认值"80%"
        描述

        在发出相应警报之前,本地节点上可以同时存在多少进程的阈值(以进程百分比表示)。

      • process_low_watermark

        类型String
        默认值"60%"
        描述

        在清除相应警报之前,本地节点上可以同时存在多少进程的阈值(以进程百分比表示)。

      • long_gc

        类型OneOf(String("disabled"),Duration)
        默认值disabled
        描述

        当系统检测到某个 Erlang 进程垃圾回收占用过长时间,会触发一条带有 long_gc 关键字的日志。 同时还会发布一条主题为 $SYS/sysmon/long_gc 的 MQTT 系统消息。

      • long_schedule

        类型OneOf(String("disabled"),Duration)
        默认值"240ms"
        描述

        启用后,如果 Erlang VM 调度器出现某个任务占用时间过长时,会触发一条带有 'long_schedule' 关键字的日志。 同时还会发布一条主题为 $SYS/sysmon/long_schedule 的 MQTT 系统消息。

      • large_heap

        类型OneOf(String("disabled"),Bytesize)
        默认值"32MB"
        描述

        启用后,当一个进程占用的堆内存超过 large_heap 指定的大小,EMQX 将产生一条包含 large_heap 关键字的 Warning 日志,同时向主题 $SYS/sysmon/large_heap 主题发布一条 MQTT 系统消息。

      • busy_dist_port

        类型Boolean
        默认值true
        描述

        启用后,当用于集群接点之间 RPC 的连接过忙时,会触发一条带有 busy_dist_port 关键字的 warning 级别日志。 同时还会发布一条主题为 $SYS/sysmon/busy_dist_port 的 MQTT 系统消息。

      • busy_port

        类型Boolean
        默认值true
        描述

        当一个系统接口(例如 TCP socket)过忙,会触发一条带有 busy_port 关键字的 warning 级别的日志。 同时还会发布一条主题为 $SYS/sysmon/busy_port 的 MQTT 系统消息。

    • os

      类型Struct(sysmon_os)

      sysmon_os

      • cpu_check_interval

        类型Duration
        默认值"60s"
        描述

        定期 CPU 检查的时间间隔。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • cpu_high_watermark

        类型String
        默认值"80%"
        描述

        在发出相应警报之前可以使用多少系统 CPU 的阈值,以系统 CPU 负载的百分比表示。

      • cpu_low_watermark

        类型String
        默认值"60%"
        描述

        在解除相应警报之前可以使用多少系统 CPU 的阈值,以系统 CPU 负载的百分比表示。

      • mem_check_interval

        类型OneOf(String("disabled"),Duration)
        默认值disabled
        描述

        定期内存检查的时间间隔。

      • sysmem_high_watermark

        类型String
        默认值"70%"
        描述

        在发出相应报警之前可以分配多少系统内存的阈值,以系统内存的百分比表示。

      • procmem_high_watermark

        类型String
        默认值"5%"
        描述

        在发出相应警报之前,一个 Erlang 进程可以分配多少系统内存的阈值,以系统内存的百分比表示。

  • alarm

    类型Struct(alarm)

    alarm

    • actions

      类型Array(Enum(log,publish))
      默认值[log, publish]
      描述

      警报激活时触发的动作。
      目前,支持以下操作:logpublish. log 将告警写入日志 (控制台或者文件). publish 将告警作为 MQTT 消息发布到系统主题: $SYS/brokers/emqx@xx.xx.xx.x/alarms/activate and $SYS/brokers/emqx@xx.xx.xx.x/alarms/deactivate

    • size_limit

      类型Integer(1..3000)
      默认值1000
      描述

      支持存储的历史告警的最大数量。当达到最大数量限制时,将删除最老的历史告警以存储新的历史告警。

    • validity_period

      类型Duration
      默认值"24h"
      描述

      历史告警的有效期。从历史告警的激活时间而非取消时间开始计算,如果其存在时间超过了有效期,该告警将被删除。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

  • flapping_detect

    类型Struct(flapping_detect)

    flapping_detect

    • enable

      类型Boolean
      默认值false
      描述

      启用抖动检测功能。

    • window_time

      类型Duration
      默认值"1m"
      描述

      抖动检测的时间窗口。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • max_count

      类型Integer(0..+inf)
      默认值15
      描述

      MQTT 客户端在“窗口”时间内允许的最大断开次数

    • ban_time

      类型Duration
      默认值"5m"
      描述

      抖动的客户端将会被禁止登录多长时间。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

  • connectors

    类型Struct(connectors)

    connectors

    • http

      类型Map($name->Struct(config_connector))
      描述

      HTTP Connector Config

      config_connector

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该连接器。

      • tags

        类型Array(String)
        描述

        连接器的标签

      • description

        类型String
        默认值""
        描述

        描述性文本。

      • url

        类型String
        描述

        HTTP 动作的 URL。
        此路径允许使用带有变量的模板,但变量不能用于方案、主机或端口部分。
        例如, http://localhost:9901/${topic} 是允许的,但 http://${host}:9901/message http://localhost:${port}/message 是不允许的。

      • headers

        类型Map
        默认值{accept = "application/json", cache-control = "no-cache", connection = "keep-alive", content-type = "application/json", keep-alive = "timeout=5"}
        描述

        HTTP 请求头。
        允许使用带有变量的模板。

      • connect_timeout

        类型Duration
        默认值"15s"
        描述

        连接到 HTTP 服务器的超时时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • retry_interval

        类型Duration
        描述

        Deprecated since 5.0.4.
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • pool_type

        类型Enum(random,hash)
        默认值random
        描述

        连接池类型。可以是random、hash之一。

      • pool_size

        类型Integer(1..+inf)
        默认值8
        描述

        连接池大小。

      • enable_pipelining

        类型Integer(1..+inf)
        默认值100
        描述

        一个正整数。是否连续发送 HTTP 请求,当设置为1时,意味着在发送每个 HTTP 请求后,需要等待服务器返回,然后继续发送下一个请求。

      • request

        类型Map
        描述

        Deprecated since 5.3.2.

      • ssl

        类型Struct(ssl_client_opts)
        默认值{enable = false}
        描述

        启用 SSL 连接。

        ssl_client_opts

        • cacertfile
          类型String
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

        • server_name_indication
          类型OneOf(String("disable"),String)
          描述

          指定要在 TLS 服务器名称指示扩展中使用的主机名。
          例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
          如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
          然后,主机名也用于对等机的主机名验证证书
          特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

      • resource_opts

        类型Struct(connector_resource_opts)
        默认值{}
        描述

        资源相关的选项。

        connector_resource_opts

        • health_check_interval
          类型Duration
          默认值"15s"
          描述

          健康检查间隔。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • start_after_created
          类型Boolean
          默认值true
          描述

          是否在创建资源后立即启动资源。

        • start_timeout
          类型Duration
          默认值"5s"
          描述

          在回复资源创建请求前等待资源进入健康状态的时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • mqtt

      类型Map($name->Struct(config_connector))
      描述

      MQTT Connector Config

      config_connector

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该连接器。

      • tags

        类型Array(String)
        描述

        连接器的标签

      • description

        类型String
        默认值""
        描述

        描述性文本。

      • pool_size

        类型Integer(1..+inf)
        默认值8
        描述

        将发布消息到远程代理的 MQTT 客户端池的大小。
        每个 MQTT 客户端都将分配'clientid',格式为'${clientid_prefix}:${bridge_name}:egress:${node}:${n}' 其中'n'是池中客户端的编号。

      • resource_opts

        类型Struct(resource_opts)
        默认值{}
        描述

        资源相关的选项。

        resource_opts

        • health_check_interval
          类型Duration
          默认值"15s"
          描述

          健康检查间隔。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • start_after_created
          类型Boolean
          默认值true
          描述

          是否在创建资源后立即启动资源。

        • start_timeout
          类型Duration
          默认值"5s"
          描述

          在回复资源创建请求前等待资源进入健康状态的时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • mode

        类型Enum(cluster_shareload)
        描述

        Deprecated since v5.1.0 & e5.1.0.

      • server

        类型String
        描述

        远程 MQTT 代理的主机和端口

      • clientid_prefix

        类型String
        描述

        附加到 egress 动作使用的 clientid 前缀(可选)。

      • reconnect_interval

        类型String
        描述

        Deprecated since v5.0.16.

      • proto_ver

        类型Enum(v3,v4,v5)
        默认值v4
        描述

        MQTT协议版本

      • bridge_mode

        类型Boolean
        默认值false
        描述

        如果启用桥接模式。 注意:此设置仅适用于 MQTT 协议版本早于5.0的情况,远程 MQTT 代理必须支持此功能。 如果将 bridge_mode 设置为true,则桥接将指示远程代理它是一个桥接而不是普通客户端。 这意味着循环检测将更加有效,并且保留的消息将被正确传递。

      • username

        类型String
        描述

        MQTT 协议的用户名

      • password

        类型Secret
        描述

        MQTT 协议的密码
        包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

      • clean_start

        类型Boolean
        默认值true
        描述

        在重新连接到入口动作时是否启动新会话

      • keepalive

        类型String
        默认值"300s"
        描述

        MQTT Keepalive. Time interval is a string that contains a number followed by time unit:
        - ms for milliseconds,

        • s for seconds,
        • m for minutes,
        • h for hours;
          or combination of whereof: 1h5m0s
      • retry_interval

        类型String
        默认值"15s"
        描述

        Message retry interval. Delay for the MQTT bridge to retry sending the QoS1/QoS2 messages in case of ACK not received. Time interval is a string that contains a number followed by time unit:
        - ms for milliseconds,

        • s for seconds,
        • m for minutes,
        • h for hours;
          or combination of whereof: 1h5m0s
      • max_inflight

        类型Integer(0..+inf)
        默认值32
        描述

        MQTT 协议的最大 inflight(已发送但未确认)消息数

      • ssl

        类型Struct(ssl_client_opts)
        默认值{enable = false}
        描述

        启用 SSL 连接。

        ssl_client_opts

        • cacertfile
          类型String
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

        • server_name_indication
          类型OneOf(String("disable"),String)
          描述

          指定要在 TLS 服务器名称指示扩展中使用的主机名。
          例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
          如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
          然后,主机名也用于对等机的主机名验证证书
          特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

    • elasticsearch

      类型Map($name->Struct(config))
      描述

      ElasticSearch Connector Config

      config

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该连接器。

      • tags

        类型Array(String)
        描述

        连接器的标签

      • description

        类型String
        默认值""
        描述

        描述性文本。

      • connect_timeout

        类型Duration
        默认值"15s"
        描述

        连接到 HTTP 服务器的超时时间。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • pool_type

        类型Enum(random,hash)
        默认值random
        描述

        连接池类型。可以是random、hash之一。

      • pool_size

        类型Integer(1..+inf)
        默认值8
        描述

        连接池大小。

      • enable_pipelining

        类型Integer(1..+inf)
        默认值100
        描述

        一个正整数。是否连续发送 HTTP 请求,当设置为1时,意味着在发送每个 HTTP 请求后,需要等待服务器返回,然后继续发送下一个请求。

      • ssl

        类型Struct(ssl_client_opts)
        默认值{enable = false}
        描述

        启用 SSL 连接。

        ssl_client_opts

        • cacertfile
          类型String
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

        • server_name_indication
          类型OneOf(String("disable"),String)
          描述

          指定要在 TLS 服务器名称指示扩展中使用的主机名。
          例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
          如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
          然后,主机名也用于对等机的主机名验证证书
          特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

      • resource_opts

        类型Struct(connector_resource_opts)
        默认值{}
        描述

        资源相关的选项。

        connector_resource_opts

        • health_check_interval
          类型Duration
          默认值"15s"
          描述

          健康检查间隔。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • start_after_created
          类型Boolean
          默认值true
          描述

          是否在创建资源后立即启动资源。

        • start_timeout
          类型Duration
          默认值"5s"
          描述

          在回复资源创建请求前等待资源进入健康状态的时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • server

        类型String
        默认值"127.0.0.1:9200"
        描述

        要连接的 IPv4 或 IPv6 地址或主机名。 一个主机条目有如下形式:主机[:端口]。 如果没有指定 [:端口],则使用 Elasticsearch 默认端口 9200。

      • authentication

        类型OneOf(Struct(auth_basic))
        描述

        认证配置

        auth_basic

        • username
          类型String
          描述

          IoTDB REST 接口配置的用户名

        • password
          类型Secret
          描述

          ElasticSearch REST 连接密码
          包含一些敏感信息的字符串,例如密码。当密钥以 file:// 开头时,字符串的其余部分将被解释为包含密钥本身的文件路径:文件的整个内容(除了任何尾随的空白字符)都被视为密钥值。注意:在集群中,所有 EMQX 节点在使用 file:// 密钥之前应该具有相同的文件。

  • actions

    类型Struct(actions)

    actions

    • http

      别名webhook
      类型Map($name->Struct(http_action))
      描述

      HTTP Action Config

      http_action

      • enable

        类型Boolean
        默认值true
        描述

        启用或停用动作

      • connector

        类型String
        描述

        由动作指定的连接器名称,用于选择外部资源。

      • tags

        类型Array(String)
        描述

        连接器的标签

      • description

        类型String
        默认值""
        描述

        描述性文本。

      • parameters

        类型Struct(parameters_opts)
        描述

        HTTP 动作的参数

        parameters_opts

        • path
          类型String
          描述

          此动作的 URL 路径。
          此路径将附加到连接器的 url 配置,以形成完整的 URL 地址。 此选项允许使用带有变量的模板。例如,/room/{$room_no}
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • method
          类型Enum(post,put,get,delete)
          默认值post
          描述

          HTTP 请求的方法。所有可用的方法包括:post、put、get、delete。
          允许使用带有变量的模板。

        • headers
          类型Map
          默认值{accept = "application/json", cache-control = "no-cache", connection = "keep-alive", content-type = "application/json", keep-alive = "timeout=5"}
          描述

          HTTP 请求头。
          允许使用带有变量的模板。

        • body
          类型String
          描述

          HTTP 请求的主体。
          如果未提供,主体将是所有可用字段的 JSON 对象。
          这里的“所有可用字段”是指在触发此 Webhook 时的 MQTT 消息的上下文(当 local_topic 已设置并接收到 MQTT 消息时触发),
          或者当此 Webhook 用作规则的动作时,在触发此 Webhook 时的事件上下文。
          允许使用带有变量的模板。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • max_retries
          类型Integer(0..+inf)
          默认值2
          描述

          如果发送请求时出错,最大的重试次数。

        • request_timeout
          类型Duration
          描述

          Deprecated since v5.0.26.
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • resource_opts

        类型Struct(action_resource_opts)
        默认值{}
        描述

        资源相关的选项。

        action_resource_opts

        • worker_pool_size
          类型Integer(1..1024)
          默认值16
          描述

          缓存队列 worker 数量。仅对 egress 类型的桥接有意义。当桥接仅有 ingress 方向时,可设置为 0,否则必须大于 0。

        • health_check_interval
          类型Duration
          默认值"15s"
          描述

          健康检查间隔。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • query_mode
          类型Enum(sync,async)
          默认值async
          描述

          请求模式。可选 '同步/异步',默认为'异步'模式。

        • request_ttl
          别名request_timeout
          类型OneOf(Duration,String("infinity"))
          默认值"45s"
          描述

          从请求进入缓冲区的时刻开始,如果请求在指定的时间内仍然停留在缓冲区中,或者已经发送但没有及时收到响应或确认,该请求将被视为过期。

        • inflight_window
          别名async_inflight_window
          类型Integer(1..+inf)
          默认值100
          描述

          请求飞行队列窗口大小。当请求模式为异步时,如果需要严格保证来自同一 MQTT 客户端的消息有序,则必须将此值设为 1。

        • max_buffer_bytes
          别名max_queue_bytes
          类型Bytesize
          默认值"256MB"
          描述

          每个缓存 worker 允许使用的最大字节数。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

    • mqtt

      类型Map($name->Struct(mqtt_publisher_action))
      描述

      MQTT Publisher Action Config

      mqtt_publisher_action

      • local_topic

        类型String
        描述

        MQTT 主题或主题过滤器作为数据源(动作输入)。 如果规则动作用作数据源,则应将此配置留空,否则消息将在远程系统中重复。

      • enable

        类型Boolean
        默认值true
        描述

        是否启用此动作。

      • connector

        类型String
        描述

        由动作指定的连接器名称,用于选择外部资源。

      • tags

        类型Array(String)
        描述

        连接器的标签

      • description

        类型String
        默认值""
        描述

        描述性文本。

      • parameters

        类型Struct(action_parameters)
        描述

        动作的具体配置。

        action_parameters

        • topic
          类型String
          描述

          要转发到远程代理的主题。
          允许使用带有变量的模板。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • qos
          类型OneOf(Integer(0..2),String)
          默认值1
          描述

          要发送的 MQTT 消息的 QoS 级别。
          允许使用带有变量的模板。

        • retain
          类型OneOf(Boolean,String)
          默认值false
          描述

          要发送的 MQTT 消息的'retain'标志。
          允许使用带有变量的模板。

        • payload
          类型String
          描述

          要发送的 MQTT 消息的有效载荷。
          允许使用带有变量的模板。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

      • resource_opts

        类型Struct(action_resource_opts)
        默认值{}
        描述

        资源相关的选项。

        action_resource_opts

        • worker_pool_size
          类型Integer(1..1024)
          默认值16
          描述

          缓存队列 worker 数量。仅对 egress 类型的桥接有意义。当桥接仅有 ingress 方向时,可设置为 0,否则必须大于 0。

        • health_check_interval
          类型Duration
          默认值"15s"
          描述

          健康检查间隔。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • query_mode
          类型Enum(sync,async)
          默认值async
          描述

          请求模式。可选 '同步/异步',默认为'异步'模式。

        • request_ttl
          别名request_timeout
          类型OneOf(Duration,String("infinity"))
          默认值"45s"
          描述

          从请求进入缓冲区的时刻开始,如果请求在指定的时间内仍然停留在缓冲区中,或者已经发送但没有及时收到响应或确认,该请求将被视为过期。

        • inflight_window
          别名async_inflight_window
          类型Integer(1..+inf)
          默认值100
          描述

          请求飞行队列窗口大小。当请求模式为异步时,如果需要严格保证来自同一 MQTT 客户端的消息有序,则必须将此值设为 1。

        • max_buffer_bytes
          别名max_queue_bytes
          类型Bytesize
          默认值"256MB"
          描述

          每个缓存 worker 允许使用的最大字节数。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

    • elasticsearch

      类型Map($action_name->Struct(action_config))
      描述

      Elasticsearch 动作

      action_config

      • enable

        类型Boolean
        默认值true
        描述

        是否启用此动作。

      • connector

        类型String
        描述

        由动作指定的连接器名称,用于选择外部资源。

      • tags

        类型Array(String)
        描述

        连接器的标签

      • description

        类型String
        默认值""
        描述

        描述性文本。

      • parameters

        类型OneOf(Struct(action_create),Struct(action_delete),Struct(action_update))
        描述

        ElasticSearch 动作参数

        action_create

        • action
          类型String("create")
          描述

          create

        • index
          类型String
          描述

          执行操作的索引名称或索引别名。 此参数是必需的。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • id
          类型String
          描述

          文档 ID。如果没有指定 ID,将自动生成。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • doc
          类型String
          描述

          JSON 文档模板,如果留空则为包含所有可用字段的 JSON 文本,如 clientid、topic、payload 等。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • routing
          类型String
          描述

          用于将操作路由到特定分片的自定义值。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • require_alias
          类型Boolean
          描述

          如果为 true, 则请求的操作必须针对一个索引别名。默认为 false。

        • overwrite
          类型Boolean
          默认值true
          描述

          如果指定 _id 的文档已经存在(冲突),将设置为 false,操作将失败。

        • max_retries
          类型Integer(0..+inf)
          默认值2
          描述

          如果发送请求时出错,最大的重试次数。

        action_delete

        • action
          类型String("delete")
          描述

          delete

        • index
          类型String
          描述

          执行操作的索引名称或索引别名。 此参数是必需的。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • id
          类型String
          描述

          文档 ID。如果没有指定 ID,将自动生成。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • routing
          类型String
          描述

          用于将操作路由到特定分片的自定义值。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • max_retries
          类型Integer(0..+inf)
          默认值2
          描述

          如果发送请求时出错,最大的重试次数。

        action_update

        • action
          类型String("update")
          描述

          update

        • index
          类型String
          描述

          执行操作的索引名称或索引别名。 此参数是必需的。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • id
          类型String
          描述

          文档 ID。如果没有指定 ID,将自动生成。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • doc
          类型String
          描述

          JSON 文档模板,如果留空则为包含所有可用字段的 JSON 文本,如 clientid、topic、payload 等。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • doc_as_upsert
          类型Boolean
          默认值false
          描述

          你可以将 doc_as_upsert 设置为 true,使用 doc 的内容作为 upsert 值,而不是发送一个不完整的文件加上一个 upsert 文件。

        • routing
          类型String
          描述

          用于将操作路由到特定分片的自定义值。
          用于${.path.to.var}样式值插值的字符串,其中开头的点是可选的。语法${.}表示取值整个对象(包含所有字段)。

        • require_alias
          类型Boolean
          描述

          如果为 true, 则请求的操作必须针对一个索引别名。默认为 false。

        • max_retries
          类型Integer(0..+inf)
          默认值2
          描述

          如果发送请求时出错,最大的重试次数。

      • resource_opts

        类型Struct(action_resource_opts)
        默认值{}
        描述

        资源相关的选项。

        action_resource_opts

        • worker_pool_size
          类型Integer(1..1024)
          默认值16
          描述

          缓存队列 worker 数量。仅对 egress 类型的桥接有意义。当桥接仅有 ingress 方向时,可设置为 0,否则必须大于 0。

        • health_check_interval
          类型Duration
          默认值"15s"
          描述

          健康检查间隔。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • query_mode
          类型Enum(sync,async)
          默认值async
          描述

          请求模式。可选 '同步/异步',默认为'异步'模式。

        • request_ttl
          别名request_timeout
          类型OneOf(Duration,String("infinity"))
          默认值"45s"
          描述

          从请求进入缓冲区的时刻开始,如果请求在指定的时间内仍然停留在缓冲区中,或者已经发送但没有及时收到响应或确认,该请求将被视为过期。

        • inflight_window
          别名async_inflight_window
          类型Integer(1..+inf)
          默认值100
          描述

          请求飞行队列窗口大小。当请求模式为异步时,如果需要严格保证来自同一 MQTT 客户端的消息有序,则必须将此值设为 1。

        • max_buffer_bytes
          别名max_queue_bytes
          类型Bytesize
          默认值"256MB"
          描述

          每个缓存 worker 允许使用的最大字节数。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

  • sources

    类型Struct(sources)

    sources

    • mqtt

      类型Map($name->Struct(mqtt_subscriber_source))
      描述

      MQTT Subscriber Source Config

      mqtt_subscriber_source

      • enable

        类型Boolean
        默认值true
        描述

        是否启用此动作。

      • connector

        类型String
        描述

        由动作指定的连接器名称,用于选择外部资源。

      • tags

        类型Array(String)
        描述

        连接器的标签

      • description

        类型String
        默认值""
        描述

        描述性文本。

      • parameters

        类型Struct(ingress_parameters)

        ingress_parameters

        • topic
          类型String
          描述

          从远程代理接收消息的主题

        • qos
          类型Integer(0..2)
          默认值1
          描述

          订阅远程代理时要使用的 QoS 级别.

      • resource_opts

        类型Struct(source_resource_opts)
        默认值{}
        描述

        资源相关的选项。

        source_resource_opts

        • health_check_interval
          类型Duration
          默认值"15s"
          描述

          健康检查间隔。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

  • retainer

    类型Struct(retainer)

    retainer

    • enable

      类型Boolean
      默认值true
      描述

      是否开启消息保留功能。

    • msg_expiry_interval

      类型Duration
      默认值"0s"
      描述

      过期的保留消息将不会再被投递,设置为 0 则表示保留消息永不过期。但如果 MQTT 消息中指定了 Message-Expiry-Interval 属性,则以该属性的值为准。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • msg_clear_interval

      类型Duration
      默认值"0s"
      描述

      检查并清除过期保留消息的时间间隔。这可以避免已经过期的保留消息仍然被长时间地存储。
      如果 msg_clear_interval 设置为 0,即不主动定期检查过期的保留消息,EMQX 将只在准备投递时检查并删除已经过期的保留消息。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • max_payload_size

      类型Bytesize
      默认值"1MB"
      描述

      允许存储的保留消息的最大大小。EMQX 将拒绝存储超过此大小的保留消息,并输出一条包含 'retain_failed_for_payload_size_exceeded_limit' 关键字的 Error 日志。
      0 表示不限制保留消息大小。
      表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

    • stop_publish_clear_msg

      类型Boolean
      默认值false
      描述

      当 PUBLISH 消息的保留标志被设置且有效载荷为空时,是否继续发布消息。 参见: http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718038

    • delivery_rate

      别名deliver_rate
      类型String
      默认值"1000/s"
      描述

      发送保留消息的最大速率。

    • backend

      类型Struct(mnesia_config)
      描述

      保留消息的存储后端。

      mnesia_config

      • type

        类型String("built_in_database")
        默认值built_in_database
        描述

        后端类型。

      • storage_type

        类型Enum(ram,disc)
        默认值ram
        描述

        选择消息是存放在磁盘还是内存中。

      • max_retained_messages

        类型Integer(0..+inf)
        默认值0
        描述

        消息保留的数量上限。0 表示无限。

      • index_specs

        类型Array(Integer)
        默认值[[1, 2, 3], [1, 3], [2, 3], [3]]
        描述

        Retainer index specifications: list of arrays of positive ascending integers. Each array specifies an index. Numbers in an index specification are 1-based word positions in topics. Words from specified positions will be used for indexing.
        For example, it is good to have [2, 4] index to optimize +/X/+/Y/... topic wildcard subscriptions.

      • enable

        类型Boolean
        默认值true
        描述

        启用内置的 Mnesia 后端。

  • telemetry

    类型Struct(telemetry)

    telemetry

    • enable

      类型Boolean
      描述

      是否启用遥测允许 EMQX 收集相关使用信息,并将这些信息分享给 EMQ 用于增强您的产品体验,在任何情况下,EMQX 都不会收集您的个人信息,例如您的 MAC 地址、IP 地址、发送的消息内容。

  • delayed

    类型Struct(delayed)

    delayed

    • enable

      类型Boolean
      默认值true
      描述

      是否启用

    • max_delayed_messages

      类型Integer
      默认值0
      描述

      延迟消息的数量上限(0 代表不限数量)

  • plugins

    类型Struct(plugins)

    plugins

    • states

      类型Array(Struct(state))
      默认值[]
      描述

      一组插件的状态。插件将按照定义的顺序启动

      state

      • name_vsn

        类型String
        描述

        插件的名称{name}-{version}。
        它应该与插件的发布包名称一致,如 my_plugin-0.1.0。

      • enable

        类型Boolean
        描述

        设置为“true”以启用此插件。

    • install_dir

      类型String
      默认值plugins
      描述

      插件安装包的目录,出于安全考虑,该目录应该值允许 emqx,或用于运行 EMQX 服务的用户拥有写入权限。

    • check_interval

      类型Duration
      描述

      Deprecated since 5.0.24.
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

  • dashboard

    类型Struct(dashboard)

    dashboard

    • listeners

      类型Struct(listeners)
      描述

      Dashboard 监听器设置。监听器必须有唯一的端口号和 IP 地址的组合。 例如,可以通过指定 IP 地址 0.0.0.0 来监听机器上给定端口上的所有配置的 IP 地址。 或者,可以为每个监听器指定唯一的 IP 地址,但使用相同的端口。

      listeners

      • http

        类型Struct(http)
        描述

        TCP listeners

        http

        • bind
          类型String
          默认值0
          描述

          监听地址和端口,热更新此配置时,会重启 Dashboard 服务。

        • num_acceptors
          类型Integer
          默认值10
          描述

          TCP 协议的 Socket acceptor 池大小, 通常配置为 CPU 核数

        • max_connections
          类型Integer
          默认值512
          描述

          监听器允许的最大并发连接数。

        • backlog
          类型Integer
          默认值1024
          描述

          排队等待连接的队列的最大长度。

        • send_timeout
          类型Duration
          默认值"10s"
          描述

          发送响应内容的超时时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • inet6
          类型Boolean
          默认值false
          描述

          启用 IPv6, 如果机器不支持 IPv6,请关闭此选项,否则会导致 Dashboard 无法使用。

        • ipv6_v6only
          类型Boolean
          默认值false
          描述

          当开启 inet6 功能的同时禁用 IPv4-to-IPv6 映射。该配置仅在 inet6 功能开启时有效。

        • proxy_header
          类型Boolean
          默认值false
          描述

          启用 Proxy Protocol 以提取客户端连接的原始信息,要求使用了代理服务器并且代理服务器也启用 Proxy Protocol。注意:一旦开启了这个功能,就无法再处理普通的 HTTP 请求。

      • https

        类型Struct(https)
        描述

        SSL listeners

        https

        • bind
          类型String
          默认值0
          描述

          监听地址和端口,热更新此配置时,会重启 Dashboard 服务。

        • ssl_options
          类型Struct(ssl_options)
          描述

          Dashboard 监听器的 SSL/TLS 选项。

          ssl_options

          • cacertfile
            类型String
            默认值"${EMQX_ETC_DIR}/certs/cacert.pem"
            描述

            受信任的 PEM 格式 CA 证书捆绑文件
            此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
            注意:从文件中失效(删除)证书不会影响已建立的连接。

          • cacerts
            类型Boolean
            描述

            Deprecated since 5.1.4.

          • certfile
            类型String
            默认值"${EMQX_ETC_DIR}/certs/cert.pem"
            描述

            PEM 格式证书链文件
            此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

          • keyfile
            类型String
            默认值"${EMQX_ETC_DIR}/certs/key.pem"
            描述

            PEM 格式的私钥文件。

          • verify
            类型Enum(verify_peer,verify_none)
            默认值verify_none
            描述

            启用或禁用对等验证。

          • reuse_sessions
            类型Boolean
            默认值true
            描述

            启用 TLS 会话重用。

          • depth
            类型Integer(0..+inf)
            默认值10
            描述

            在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
            如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
            如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

          • password
            类型String
            描述

            包含用户密码的字符串。仅在私钥文件受密码保护时使用。

          • versions
            类型Array(String)
            默认值["tlsv1.3", "tlsv1.2"]
            描述

            支持所有 TLS/DTLS 版本
            注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

          • ciphers
            类型Array(String)
            默认值[]
            描述

            此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
            密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

            名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
            注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

            例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


            注:PSK 的 Ciphers 不支持 tlsv1.3
            如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
            PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
          • secure_renegotiate
            类型Boolean
            默认值true
            描述

            指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
            如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
            当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

          • log_level
            类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
            默认值notice
            描述

            允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

          • hibernate_after
            类型Duration
            默认值"5s"
            描述

            指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
            表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
            例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
            Duration 等价于 Duration(ms)。单位部分不区分大小写。

          • dhfile
            类型String
            描述

            如果协商使用 Diffie-Hellman 密钥交换的密码套件,则服务器将使用包含 PEM 编码的 Diffie-Hellman 参数的文件的路径。如果未指定,则使用默认参数。
            注意:TLS 1.3 不支持dhfile选项。

          • honor_cipher_order
            类型Boolean
            默认值true
            描述

            一个重要的安全设置如果启用此设置,服务器将从客户端支持的密码套件列表中优先选择它最偏好的密码套件(由 ciphers 指定,偏好程度从左至右依次降低),从而忽略客户端的首选项。使用服务器的首选项通常更好,因为更有可能正确配置服务器。

          • client_renegotiation
            类型Boolean
            默认值true
            描述

            在支持客户机发起的重新协商的协议中,这种操作的资源成本对于服务器来说高于客户机。 这可能会成为拒绝服务攻击的载体。 SSL 应用程序已经采取措施来反击此类尝试,但通过将此选项设置为 false,可以严格禁用客户端发起的重新协商。 默认值为 true。请注意,由于基础密码套件可以加密的消息数量有限,禁用重新协商可能会导致长期连接变得不可用。

          • handshake_timeout
            类型Duration
            默认值"15s"
            描述

            握手完成所允许的最长时间
            表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
            例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
            Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • num_acceptors
          类型Integer
          默认值10
          描述

          TCP 协议的 Socket acceptor 池大小, 通常配置为 CPU 核数

        • max_connections
          类型Integer
          默认值512
          描述

          监听器允许的最大并发连接数。

        • backlog
          类型Integer
          默认值1024
          描述

          排队等待连接的队列的最大长度。

        • send_timeout
          类型Duration
          默认值"10s"
          描述

          发送响应内容的超时时间。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • inet6
          类型Boolean
          默认值false
          描述

          启用 IPv6, 如果机器不支持 IPv6,请关闭此选项,否则会导致 Dashboard 无法使用。

        • ipv6_v6only
          类型Boolean
          默认值false
          描述

          当开启 inet6 功能的同时禁用 IPv4-to-IPv6 映射。该配置仅在 inet6 功能开启时有效。

        • proxy_header
          类型Boolean
          默认值false
          描述

          启用 Proxy Protocol 以提取客户端连接的原始信息,要求使用了代理服务器并且代理服务器也启用 Proxy Protocol。注意:一旦开启了这个功能,就无法再处理普通的 HTTP 请求。

    • token_expired_time

      类型Duration
      默认值"60m"
      描述

      登录成功返回的 JWT token 过期时间,默认为 60 分钟。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • cors

      类型Boolean
      默认值false
      描述

      CORS(Cross-Origin Resource Sharing,跨域资源共享)允许服务器响应来自任何来源(域名、协议或端口)的请求,启用后允许另一个域名下的服务直接通过 JavaScript 调用 EMQX REST API。

    • swagger_support

      类型Boolean
      默认值true
      描述

      启用或禁用对 Swagger API 文档的支持。

  • gateway

    类型Struct(gateway)

    gateway

    • coap

      类型Struct(coap)

      coap

      • heartbeat

        类型Duration(s)
        默认值"30s"
        描述

        CoAP 网关要求客户端的最小心跳间隔时间。 当 connection_required 开启后,该参数用于检查客户端连接是否存活
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • connection_required

        类型Boolean
        默认值false
        描述

        是否开启连接模式。 连接模式是非标准协议的功能。它维护 CoAP 客户端上线、认证、和连接状态的保持

      • notify_type

        类型Enum(non,con,qos)
        默认值qos
        描述

        投递给 CoAP 客户端的通知消息类型。当客户端 Observe 一个资源(或订阅某个主题)时,网关会向客户端推送新产生的消息。其消息类型可设置为:

        • non: 不需要客户端返回确认消息;
        • con: 需要客户端返回一个确认消息;
        • qos: 取决于消息的 QoS 等级; QoS 0 会以 non 类型下发,QoS 1/2 会以 con 类型下发
      • subscribe_qos

        类型Enum(qos0,qos1,qos2,coap)
        默认值coap
        描述

        客户端订阅请求的默认 QoS 等级。 当 CoAP 客户端发起订阅请求时,如果未携带 qos 参数则会使用该默认值。默认值可设置为:

        • qos0、 qos1、qos2: 设置为固定的 QoS 等级
        • coap: 依据订阅操作的 CoAP 报文类型来动态决定
          • 当订阅请求为 non-confirmable 类型时,取值为 qos0
          • 当订阅请求为 confirmable 类型时,取值为 qos1
      • publish_qos

        类型Enum(qos0,qos1,qos2,coap)
        默认值coap
        描述

        客户端发布请求的默认 QoS 等级。 当 CoAP 客户端发起发布请求时,如果未携带 qos 参数则会使用该默认值。默认值可设置为:

        • qos0、qos1、qos2: 设置为固定的 QoS 等级
        • coap: 依据发布操作的 CoAP 报文类型来动态决定
          • 当发布请求为 non-confirmable 类型时,取值为 qos0
          • 当发布请求为 confirmable 类型时,取值为 qos1
      • mountpoint

        类型String
        默认值""
        描述

        发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在 listeners.tcp.\<name>.mountpoint 设置为 some_tenant 的情况下订阅 t, 则客户端实际上订阅了 some_tenant/t 主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题 t 发送消息, 则该消息被路由到所有订阅了 some_tenant/t 的客户端,因此客户端 A 将收到该消息,带有 主题名称t。 设置为 "" 以禁用该功能。 挂载点字符串中可用的变量:

        • ${clientid}:clientid
        • ${username}:用户名
      • listeners

        类型Struct(udp_listeners)

        udp_listeners

        • udp
          类型Map($name->Struct(udp_listener))
          描述

          从监听器名称到配置参数的映射。

          udp_listener

          • health_check
            类型Struct(udp_health_check)
            描述

            某些云平台使用 请求-响应 机制来检查 UDP 端口是否健康,可以在此配置这对机制。

            udp_health_check

            • request
              类型String
              描述

              请求的内容。

            • reply
              类型String
              描述

              回复的内容。

          • udp_options
            类型Struct(udp_opts)

            udp_opts

            • active_n
              类型Integer
              默认值100
              描述

              为 Socket 指定 {active, N} 选项。 参见:https://erlang.org/doc/man/inet.html#setopts-2

            • recbuf
              类型Bytesize
              描述

              Socket 在内核空间接收缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • sndbuf
              类型Bytesize
              描述

              Socket 在内核空间发送缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • buffer
              类型Bytesize
              描述

              Socket 在用户空间的缓冲区大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • reuseaddr
              类型Boolean
              默认值true
              描述

              允许重用本地处于 TIME_WAIT 的端口号。

          • enable
            类型Boolean
            默认值true
            描述

            是否启用该监听器。

          • bind
            类型String
            描述

            监听器绑定的 IP 地址或端口。

          • max_connections
            类型OneOf(Integer(1..+inf),String("infinity"))
            默认值1024
            描述

            监听器支持的最大连接数。

          • max_conn_rate
            类型Integer
            默认值1000
            描述

            监听器允许的最大连接速率。

          • enable_authn
            类型Boolean
            默认值true
            描述

            配置 true (默认值)启用客户端进行身份认证。 配置 false 时,将不对客户端做任何认证。

          • mountpoint
            类型String
            描述

            发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在 listeners.tcp.\<name>.mountpoint 设置为 some_tenant 的情况下订阅 t, 则客户端实际上订阅了 some_tenant/t 主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题 t 发送消息, 则该消息被路由到所有订阅了 some_tenant/t 的客户端,因此客户端 A 将收到该消息,带有 主题名称t。 设置为 "" 以禁用该功能。 挂载点字符串中可用的变量:

            • ${clientid}:clientid
            • ${username}:用户名
          • access_rules
            类型Array(String)
            默认值[]
            描述

            由字符串规则组成的访问规则列表,以限制或允许某些地址的访问。规则之间存在前后顺序。规则的格式为 allow | deny <address> | <CIDR> | all
            例如:
            ["deny 192.168.1.1", "allow 192.168.1.0/24", "deny, all"]

        • dtls
          类型Map($name->Struct(dtls_listener))
          描述

          从监听器名称到配置参数的映射。

          dtls_listener

          • acceptors
            类型Integer
            默认值16
            描述

            Acceptor 进程池大小。

          • health_check
            类型Struct(udp_health_check)
            描述

            某些云平台使用 请求-响应 机制来检查 UDP 端口是否健康,可以在此配置这对机制。

            udp_health_check

            • request
              类型String
              描述

              请求的内容。

            • reply
              类型String
              描述

              回复的内容。

          • udp_options
            类型Struct(udp_opts)

            udp_opts

            • active_n
              类型Integer
              默认值100
              描述

              为 Socket 指定 {active, N} 选项。 参见:https://erlang.org/doc/man/inet.html#setopts-2

            • recbuf
              类型Bytesize
              描述

              Socket 在内核空间接收缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • sndbuf
              类型Bytesize
              描述

              Socket 在内核空间发送缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • buffer
              类型Bytesize
              描述

              Socket 在用户空间的缓冲区大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • reuseaddr
              类型Boolean
              默认值true
              描述

              允许重用本地处于 TIME_WAIT 的端口号。

          • enable
            类型Boolean
            默认值true
            描述

            是否启用该监听器。

          • bind
            类型String
            描述

            监听器绑定的 IP 地址或端口。

          • max_connections
            类型OneOf(Integer(1..+inf),String("infinity"))
            默认值1024
            描述

            监听器支持的最大连接数。

          • max_conn_rate
            类型Integer
            默认值1000
            描述

            监听器允许的最大连接速率。

          • enable_authn
            类型Boolean
            默认值true
            描述

            配置 true (默认值)启用客户端进行身份认证。 配置 false 时,将不对客户端做任何认证。

          • mountpoint
            类型String
            描述

            发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在 listeners.tcp.\<name>.mountpoint 设置为 some_tenant 的情况下订阅 t, 则客户端实际上订阅了 some_tenant/t 主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题 t 发送消息, 则该消息被路由到所有订阅了 some_tenant/t 的客户端,因此客户端 A 将收到该消息,带有 主题名称t。 设置为 "" 以禁用该功能。 挂载点字符串中可用的变量:

            • ${clientid}:clientid
            • ${username}:用户名
          • access_rules
            类型Array(String)
            默认值[]
            描述

            由字符串规则组成的访问规则列表,以限制或允许某些地址的访问。规则之间存在前后顺序。规则的格式为 allow | deny <address> | <CIDR> | all
            例如:
            ["deny 192.168.1.1", "allow 192.168.1.0/24", "deny, all"]

          • dtls_options
            类型Struct(dtls_opts)
            描述

            DTLS Socket 配置

            dtls_opts

            • cacertfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/cacert.pem"
              描述

              受信任的 PEM 格式 CA 证书捆绑文件
              此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
              注意:从文件中失效(删除)证书不会影响已建立的连接。

            • cacerts
              类型Boolean
              描述

              Deprecated since 5.1.4.

            • certfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/cert.pem"
              描述

              PEM 格式证书链文件
              此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

            • keyfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/key.pem"
              描述

              PEM 格式的私钥文件。

            • verify
              类型Enum(verify_peer,verify_none)
              默认值verify_none
              描述

              启用或禁用对等验证。

            • reuse_sessions
              类型Boolean
              默认值true
              描述

              启用 TLS 会话重用。

            • depth
              类型Integer(0..+inf)
              默认值10
              描述

              在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
              如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
              如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

            • password
              类型String
              描述

              包含用户密码的字符串。仅在私钥文件受密码保护时使用。

            • versions
              类型Array(String)
              默认值["dtlsv1.2"]
              描述

              支持所有 TLS/DTLS 版本
              注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

            • ciphers
              类型Array(String)
              默认值[]
              描述

              此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
              密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

              名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
              注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

              例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


              注:PSK 的 Ciphers 不支持 tlsv1.3
              如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
              PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
            • secure_renegotiate
              类型Boolean
              默认值true
              描述

              指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
              如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
              当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

            • log_level
              类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
              默认值notice
              描述

              允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

            • hibernate_after
              类型Duration
              默认值"5s"
              描述

              指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
              表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
              例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
              Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • dhfile
              类型String
              描述

              如果协商使用 Diffie-Hellman 密钥交换的密码套件,则服务器将使用包含 PEM 编码的 Diffie-Hellman 参数的文件的路径。如果未指定,则使用默认参数。
              注意:TLS 1.3 不支持dhfile选项。

            • fail_if_no_peer_cert
              类型Boolean
              默认值false
              描述

              此选项仅在 verify 设置为 verify_peer 时有效。 如果设置为 true,那么 EMQX 将在客户端未能提供证书时拒绝该连接。 如果设置为 false,则 EMQX 将接受未提供证书的客户端。

            • honor_cipher_order
              类型Boolean
              默认值true
              描述

              一个重要的安全设置如果启用此设置,服务器将从客户端支持的密码套件列表中优先选择它最偏好的密码套件(由 ciphers 指定,偏好程度从左至右依次降低),从而忽略客户端的首选项。使用服务器的首选项通常更好,因为更有可能正确配置服务器。

            • client_renegotiation
              类型Boolean
              默认值true
              描述

              在支持客户机发起的重新协商的协议中,这种操作的资源成本对于服务器来说高于客户机。 这可能会成为拒绝服务攻击的载体。 SSL 应用程序已经采取措施来反击此类尝试,但通过将此选项设置为 false,可以严格禁用客户端发起的重新协商。 默认值为 true。请注意,由于基础密码套件可以加密的消息数量有限,禁用重新协商可能会导致长期连接变得不可用。

            • handshake_timeout
              类型Duration
              默认值"15s"
              描述

              握手完成所允许的最长时间
              表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
              例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
              Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • gc_after_handshake
              类型Boolean
              默认值false
              描述

              内存使用调优。如果启用,将在 TLS/SSL 握手完成后立即执行垃圾回收。TLS/SSL 握手建立后立即进行 GC。

            • ocsp
              类型Struct(ocsp)

              ocsp

              • enable_ocsp_stapling
                类型Boolean
                默认值false
                描述

                是否为监听器启用 OCSP Stapling 功能。 如果设置为 true,需要定义 OCSP Responder 的 URL 和证书签发者的 PEM 文件路径。

              • responder_url
                类型String
                描述

                用于检查服务器证书的 OCSP Responder 的 URL。

              • issuer_pem
                类型String
                描述

                服务器证书的 OCSP 签发者的 PEM 编码证书。

              • refresh_interval
                类型Duration
                默认值"5m"
                描述

                为服务器刷新 OCSP 响应的周期。
                表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
                例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
                Duration 等价于 Duration(ms)。单位部分不区分大小写。

              • refresh_http_timeout
                类型Duration
                默认值"15s"
                描述

                检查 OCSP 响应时,HTTP 请求的超时。
                表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
                例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
                Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • enable_crl_check
              类型Boolean
              默认值false
              描述

              是否为该监听器启用 CRL 检查。

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该网关

      • enable_stats

        类型Boolean
        默认值true
        描述

        是否开启客户端统计

      • idle_timeout

        类型Duration
        默认值"30s"
        描述

        客户端连接过程的空闲时间。该配置用于:

        1. 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
        2. 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。
      • clientinfo_override

        类型Struct(clientinfo_override)
        描述

        ClientInfo 重写。

        clientinfo_override

        • username
          类型String
          描述

          username 重写模板

        • password
          类型String
          描述

          password 重写模板

        • clientid
          类型String
          描述

          clientid 重写模板

    • exproto

      类型Struct(exproto)

      exproto

      • server

        类型Struct(exproto_grpc_server)
        描述

        配置 ExProto 网关需要启动的 ConnectionAdapter 服务。 该服务用于提供客户端的认证、发布、订阅和数据下行等功能。

        exproto_grpc_server

        • bind
          类型String
          描述

          服务监听地址和端口。

        • ssl_options
          类型Struct(ssl_server_opts)
          描述

          服务 SSL 配置。

          ssl_server_opts

          • cacertfile
            类型String
            默认值"${EMQX_ETC_DIR}/certs/cacert.pem"
            描述

            受信任的 PEM 格式 CA 证书捆绑文件
            此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
            注意:从文件中失效(删除)证书不会影响已建立的连接。

          • cacerts
            类型Boolean
            描述

            Deprecated since 5.1.4.

          • certfile
            类型String
            默认值"${EMQX_ETC_DIR}/certs/cert.pem"
            描述

            PEM 格式证书链文件
            此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

          • keyfile
            类型String
            默认值"${EMQX_ETC_DIR}/certs/key.pem"
            描述

            PEM 格式的私钥文件。

          • verify
            类型Enum(verify_peer,verify_none)
            默认值verify_none
            描述

            启用或禁用对等验证。

          • reuse_sessions
            类型Boolean
            默认值true
            描述

            启用 TLS 会话重用。

          • depth
            类型Integer(0..+inf)
            默认值10
            描述

            在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
            如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
            如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

          • password
            类型String
            描述

            包含用户密码的字符串。仅在私钥文件受密码保护时使用。

          • versions
            类型Array(String)
            默认值["tlsv1.3", "tlsv1.2"]
            描述

            支持所有 TLS/DTLS 版本
            注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

          • ciphers
            类型Array(String)
            默认值[]
            描述

            此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
            密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

            名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
            注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

            例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


            注:PSK 的 Ciphers 不支持 tlsv1.3
            如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
            PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
          • secure_renegotiate
            类型Boolean
            默认值true
            描述

            指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
            如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
            当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

          • log_level
            类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
            默认值notice
            描述

            允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

          • hibernate_after
            类型Duration
            默认值"5s"
            描述

            指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
            表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
            例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
            Duration 等价于 Duration(ms)。单位部分不区分大小写。

          • dhfile
            类型String
            描述

            如果协商使用 Diffie-Hellman 密钥交换的密码套件,则服务器将使用包含 PEM 编码的 Diffie-Hellman 参数的文件的路径。如果未指定,则使用默认参数。
            注意:TLS 1.3 不支持dhfile选项。

          • fail_if_no_peer_cert
            类型Boolean
            默认值false
            描述

            此选项仅在 verify 设置为 verify_peer 时有效。 如果设置为 true,那么 EMQX 将在客户端未能提供证书时拒绝该连接。 如果设置为 false,则 EMQX 将接受未提供证书的客户端。

          • honor_cipher_order
            类型Boolean
            默认值true
            描述

            一个重要的安全设置如果启用此设置,服务器将从客户端支持的密码套件列表中优先选择它最偏好的密码套件(由 ciphers 指定,偏好程度从左至右依次降低),从而忽略客户端的首选项。使用服务器的首选项通常更好,因为更有可能正确配置服务器。

          • client_renegotiation
            类型Boolean
            默认值true
            描述

            在支持客户机发起的重新协商的协议中,这种操作的资源成本对于服务器来说高于客户机。 这可能会成为拒绝服务攻击的载体。 SSL 应用程序已经采取措施来反击此类尝试,但通过将此选项设置为 false,可以严格禁用客户端发起的重新协商。 默认值为 true。请注意,由于基础密码套件可以加密的消息数量有限,禁用重新协商可能会导致长期连接变得不可用。

          • handshake_timeout
            类型Duration
            默认值"15s"
            描述

            握手完成所允许的最长时间
            表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
            例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
            Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • handler

        类型Struct(exproto_grpc_handler)
        描述

        配置 ExProto 网关需要请求的 ConnectionHandler 服务地址。 该服务用于给 ExProto 提供客户端的 Socket 事件处理、字节解码、订阅消息接收等功能。

        exproto_grpc_handler

        • address
          类型String
          描述

          对端 gRPC 服务器地址。

        • service_name
          类型OneOf(String("ConnectionHandler"),String("ConnectionUnaryHandler"))
          默认值ConnectionUnaryHandler
          描述

          用于处理连接事件的服务名称 在初始版本中,我们期望使用流来提高 ConnectionHandler 中请求的效率。 但不幸的是,不同流之间的事件顺序混乱。 这导致 OnSocketCreated 事件可能会 在 OnReceivedBytes 之后到达。 因此,自 v5.0.25 起,我们添加了 ConnectionUnaryHandler 服务,并强制在其中使用了 Unary,以避免顺序问题。

        • ssl_options
          类型Struct(ssl_client_opts)
          描述

          gRPC 客户端的 SSL 配置。

          ssl_client_opts

          • cacertfile
            类型String
            描述

            受信任的 PEM 格式 CA 证书捆绑文件
            此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
            注意:从文件中失效(删除)证书不会影响已建立的连接。

          • cacerts
            类型Boolean
            描述

            Deprecated since 5.1.4.

          • certfile
            类型String
            描述

            PEM 格式证书链文件
            此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

          • keyfile
            类型String
            描述

            PEM 格式的私钥文件。

          • verify
            类型Enum(verify_peer,verify_none)
            默认值verify_none
            描述

            启用或禁用对等验证。

          • reuse_sessions
            类型Boolean
            默认值true
            描述

            启用 TLS 会话重用。

          • depth
            类型Integer(0..+inf)
            默认值10
            描述

            在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
            如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
            如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

          • password
            类型String
            描述

            包含用户密码的字符串。仅在私钥文件受密码保护时使用。

          • versions
            类型Array(String)
            默认值["tlsv1.3", "tlsv1.2"]
            描述

            支持所有 TLS/DTLS 版本
            注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

          • ciphers
            类型Array(String)
            默认值[]
            描述

            此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
            密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

            名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
            注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

            例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


            注:PSK 的 Ciphers 不支持 tlsv1.3
            如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
            PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
          • secure_renegotiate
            类型Boolean
            默认值true
            描述

            指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
            如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
            当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

          • log_level
            类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
            默认值notice
            描述

            允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

          • hibernate_after
            类型Duration
            默认值"5s"
            描述

            指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
            表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
            例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
            Duration 等价于 Duration(ms)。单位部分不区分大小写。

          • enable
            类型Boolean
            默认值false
            描述

            启用 TLS。

          • server_name_indication
            类型OneOf(String("disable"),String)
            描述

            指定要在 TLS 服务器名称指示扩展中使用的主机名。
            例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
            如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
            然后,主机名也用于对等机的主机名验证证书
            特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

      • mountpoint

        类型String
        默认值""
        描述

        发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在 listeners.tcp.\<name>.mountpoint 设置为 some_tenant 的情况下订阅 t, 则客户端实际上订阅了 some_tenant/t 主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题 t 发送消息, 则该消息被路由到所有订阅了 some_tenant/t 的客户端,因此客户端 A 将收到该消息,带有 主题名称t。 设置为 "" 以禁用该功能。 挂载点字符串中可用的变量:

        • ${clientid}:clientid
        • ${username}:用户名
      • listeners

        类型Struct(tcp_udp_listeners)

        tcp_udp_listeners

        • tcp
          类型Map($name->Struct(tcp_listener))
          描述

          从监听器名称到配置参数的映射。

          tcp_listener

          • acceptors
            类型Integer
            默认值16
            描述

            Acceptor 进程池大小。

          • tcp_options
            类型Struct(tcp_opts)
            描述

            TCP Socket 配置。

            tcp_opts

            • active_n
              类型Integer(0..+inf)
              默认值100
              描述

              为此套接字指定{active,N}选项
              See: https://erlang.org/doc/man/inet.html#setopts-2

            • backlog
              类型Integer(1..+inf)
              默认值1024
              描述

              TCP backlog 定义了挂起连接队列可以增长到的最大长度。

            • send_timeout
              类型Duration
              默认值"15s"
              描述

              进程因向繁忙的套接字发送数据而挂起的最长时间,超时后将关闭此 TCP 连接与进程。
              进程解除挂起需要套接字解除繁忙状态,即堆积在 Erlang 内部缓冲区中的数据从高位水线(由 high_watermark 指定)降至低水位线(默认为 4KB)。
              因此 (high_watermark - 4KB) / send_timeout 必须是一个合适的消息流出速度,否则挂起的进程将永远无法在超时前恢复。
              表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
              例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
              Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • send_timeout_close
              类型Boolean
              默认值true
              描述

              如果发送超时,则关闭连接。

            • recbuf
              类型Bytesize
              描述

              连接的 TCP 接收缓冲区(OS 内核)。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • sndbuf
              类型Bytesize
              描述

              连接的 TCP 发送缓冲区(OS 内核)。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • buffer
              类型Bytesize
              默认值"4KB"
              描述

              驱动程序使用的用户空间缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • high_watermark
              类型Bytesize
              默认值"1MB"
              描述

              当 EMQX 尝试发送的数据多于操作系统为套接字分配的发送缓冲区的空间时,剩余数据将被暂储在 Erlang 的内部缓冲区中,然后在后台发送。
              如果该内部缓冲区中排队的数据量超过了 high_watermark,对应的套接字就会被标记为繁忙。
              繁忙期间向此套接字发送数据的进程将被挂起,直到套接字解除繁忙或挂起时间超过 send_timeout
              套接字只有在内部缓冲区中的数据低于低水位线时才会解除繁忙。
              进程挂起期间,进程的消息队列可能发生堆积,详见 max_mailbox_len
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • nodelay
              类型Boolean
              默认值true
              描述

              连接的 TCP_NODELAY 标识

            • reuseaddr
              类型Boolean
              默认值true
              描述

              连接的 SO_REUSEADDR 标识。

            • keepalive
              类型String
              默认值none
              描述

              为 MQTT 连接在 TCP 或 SSL 上启用 TCP 保活。 值是以逗号分隔的三个数字,格式为 'Idle,Interval,Probes'

              • Idle: 在服务器开始发送保活探测之前,连接需要处于空闲状态的秒数(Linux 默认为 7200)。
              • Interval: TCP 保活探测间隔的秒数(Linux 默认值为 75)。
              • Probes: 在放弃并终止连接之前,从另一端未获得响应时要发送的 TCP 保活探测的最大数量(Linux 默认值为 9 次)。 例如 "240,30,5" 表示:在连接空闲 240 秒后发送 TCP 保活探测,每隔 30 秒发送一次,直到收到响应,如果连续丢失 5 个响应,连接应该被关闭。 默认值为 'none'
          • proxy_protocol
            类型Boolean
            默认值false
            描述

            如果为 EMQX 部署了反向代理,且在代理处启用了 PROXY 协议以传递客户端真实 IP 时,则需要一并开启此选项,以便 EMQX 从 PROXY 协议标头中提取客户端真实 IP。EMQX 将自动检测 PROXY 协议的版本,支持 V1 和 V2。
            PROXY 协议的详细说明,请参考:https://www.haproxy.com/blog/haproxy/proxy-protocol/

          • proxy_protocol_timeout
            类型Duration
            默认值"3s"
            描述

            接收 Proxy Protocol 报文头的超时时间。如果在超时内没有收到 Proxy Protocol 包,EMQX 将关闭 TCP 连接。
            表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
            例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
            Duration 等价于 Duration(ms)。单位部分不区分大小写。

          • enable
            类型Boolean
            默认值true
            描述

            是否启用该监听器。

          • bind
            类型String
            描述

            监听器绑定的 IP 地址或端口。

          • max_connections
            类型OneOf(Integer(1..+inf),String("infinity"))
            默认值1024
            描述

            监听器支持的最大连接数。

          • max_conn_rate
            类型Integer
            默认值1000
            描述

            监听器允许的最大连接速率。

          • enable_authn
            类型Boolean
            默认值true
            描述

            配置 true (默认值)启用客户端进行身份认证。 配置 false 时,将不对客户端做任何认证。

          • mountpoint
            类型String
            描述

            发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在 listeners.tcp.\<name>.mountpoint 设置为 some_tenant 的情况下订阅 t, 则客户端实际上订阅了 some_tenant/t 主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题 t 发送消息, 则该消息被路由到所有订阅了 some_tenant/t 的客户端,因此客户端 A 将收到该消息,带有 主题名称t。 设置为 "" 以禁用该功能。 挂载点字符串中可用的变量:

            • ${clientid}:clientid
            • ${username}:用户名
          • access_rules
            类型Array(String)
            默认值[]
            描述

            由字符串规则组成的访问规则列表,以限制或允许某些地址的访问。规则之间存在前后顺序。规则的格式为 allow | deny <address> | <CIDR> | all
            例如:
            ["deny 192.168.1.1", "allow 192.168.1.0/24", "deny, all"]

        • ssl
          类型Map($name->Struct(ssl_listener))
          描述

          从监听器名称到配置参数的映射。

          ssl_listener

          • acceptors
            类型Integer
            默认值16
            描述

            Acceptor 进程池大小。

          • tcp_options
            类型Struct(tcp_opts)
            描述

            TCP Socket 配置。

            tcp_opts

            • active_n
              类型Integer(0..+inf)
              默认值100
              描述

              为此套接字指定{active,N}选项
              See: https://erlang.org/doc/man/inet.html#setopts-2

            • backlog
              类型Integer(1..+inf)
              默认值1024
              描述

              TCP backlog 定义了挂起连接队列可以增长到的最大长度。

            • send_timeout
              类型Duration
              默认值"15s"
              描述

              进程因向繁忙的套接字发送数据而挂起的最长时间,超时后将关闭此 TCP 连接与进程。
              进程解除挂起需要套接字解除繁忙状态,即堆积在 Erlang 内部缓冲区中的数据从高位水线(由 high_watermark 指定)降至低水位线(默认为 4KB)。
              因此 (high_watermark - 4KB) / send_timeout 必须是一个合适的消息流出速度,否则挂起的进程将永远无法在超时前恢复。
              表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
              例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
              Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • send_timeout_close
              类型Boolean
              默认值true
              描述

              如果发送超时,则关闭连接。

            • recbuf
              类型Bytesize
              描述

              连接的 TCP 接收缓冲区(OS 内核)。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • sndbuf
              类型Bytesize
              描述

              连接的 TCP 发送缓冲区(OS 内核)。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • buffer
              类型Bytesize
              默认值"4KB"
              描述

              驱动程序使用的用户空间缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • high_watermark
              类型Bytesize
              默认值"1MB"
              描述

              当 EMQX 尝试发送的数据多于操作系统为套接字分配的发送缓冲区的空间时,剩余数据将被暂储在 Erlang 的内部缓冲区中,然后在后台发送。
              如果该内部缓冲区中排队的数据量超过了 high_watermark,对应的套接字就会被标记为繁忙。
              繁忙期间向此套接字发送数据的进程将被挂起,直到套接字解除繁忙或挂起时间超过 send_timeout
              套接字只有在内部缓冲区中的数据低于低水位线时才会解除繁忙。
              进程挂起期间,进程的消息队列可能发生堆积,详见 max_mailbox_len
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • nodelay
              类型Boolean
              默认值true
              描述

              连接的 TCP_NODELAY 标识

            • reuseaddr
              类型Boolean
              默认值true
              描述

              连接的 SO_REUSEADDR 标识。

            • keepalive
              类型String
              默认值none
              描述

              为 MQTT 连接在 TCP 或 SSL 上启用 TCP 保活。 值是以逗号分隔的三个数字,格式为 'Idle,Interval,Probes'

              • Idle: 在服务器开始发送保活探测之前,连接需要处于空闲状态的秒数(Linux 默认为 7200)。
              • Interval: TCP 保活探测间隔的秒数(Linux 默认值为 75)。
              • Probes: 在放弃并终止连接之前,从另一端未获得响应时要发送的 TCP 保活探测的最大数量(Linux 默认值为 9 次)。 例如 "240,30,5" 表示:在连接空闲 240 秒后发送 TCP 保活探测,每隔 30 秒发送一次,直到收到响应,如果连续丢失 5 个响应,连接应该被关闭。 默认值为 'none'
          • proxy_protocol
            类型Boolean
            默认值false
            描述

            如果为 EMQX 部署了反向代理,且在代理处启用了 PROXY 协议以传递客户端真实 IP 时,则需要一并开启此选项,以便 EMQX 从 PROXY 协议标头中提取客户端真实 IP。EMQX 将自动检测 PROXY 协议的版本,支持 V1 和 V2。
            PROXY 协议的详细说明,请参考:https://www.haproxy.com/blog/haproxy/proxy-protocol/

          • proxy_protocol_timeout
            类型Duration
            默认值"3s"
            描述

            接收 Proxy Protocol 报文头的超时时间。如果在超时内没有收到 Proxy Protocol 包,EMQX 将关闭 TCP 连接。
            表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
            例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
            Duration 等价于 Duration(ms)。单位部分不区分大小写。

          • enable
            类型Boolean
            默认值true
            描述

            是否启用该监听器。

          • bind
            类型String
            描述

            监听器绑定的 IP 地址或端口。

          • max_connections
            类型OneOf(Integer(1..+inf),String("infinity"))
            默认值1024
            描述

            监听器支持的最大连接数。

          • max_conn_rate
            类型Integer
            默认值1000
            描述

            监听器允许的最大连接速率。

          • enable_authn
            类型Boolean
            默认值true
            描述

            配置 true (默认值)启用客户端进行身份认证。 配置 false 时,将不对客户端做任何认证。

          • mountpoint
            类型String
            描述

            发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在 listeners.tcp.\<name>.mountpoint 设置为 some_tenant 的情况下订阅 t, 则客户端实际上订阅了 some_tenant/t 主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题 t 发送消息, 则该消息被路由到所有订阅了 some_tenant/t 的客户端,因此客户端 A 将收到该消息,带有 主题名称t。 设置为 "" 以禁用该功能。 挂载点字符串中可用的变量:

            • ${clientid}:clientid
            • ${username}:用户名
          • access_rules
            类型Array(String)
            默认值[]
            描述

            由字符串规则组成的访问规则列表,以限制或允许某些地址的访问。规则之间存在前后顺序。规则的格式为 allow | deny <address> | <CIDR> | all
            例如:
            ["deny 192.168.1.1", "allow 192.168.1.0/24", "deny, all"]

          • ssl_options
            类型Struct(listener_ssl_opts)
            描述

            SSL Socket 配置。

            listener_ssl_opts

            • cacertfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/cacert.pem"
              描述

              受信任的 PEM 格式 CA 证书捆绑文件
              此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
              注意:从文件中失效(删除)证书不会影响已建立的连接。

            • cacerts
              类型Boolean
              描述

              Deprecated since 5.1.4.

            • certfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/cert.pem"
              描述

              PEM 格式证书链文件
              此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

            • keyfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/key.pem"
              描述

              PEM 格式的私钥文件。

            • verify
              类型Enum(verify_peer,verify_none)
              默认值verify_none
              描述

              启用或禁用对等验证。

            • reuse_sessions
              类型Boolean
              默认值true
              描述

              启用 TLS 会话重用。

            • depth
              类型Integer(0..+inf)
              默认值10
              描述

              在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
              如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
              如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

            • password
              类型String
              描述

              包含用户密码的字符串。仅在私钥文件受密码保护时使用。

            • versions
              类型Array(String)
              默认值["tlsv1.3", "tlsv1.2"]
              描述

              支持所有 TLS/DTLS 版本
              注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

            • ciphers
              类型Array(String)
              默认值[]
              描述

              此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
              密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

              名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
              注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

              例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


              注:PSK 的 Ciphers 不支持 tlsv1.3
              如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
              PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
            • secure_renegotiate
              类型Boolean
              默认值true
              描述

              指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
              如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
              当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

            • log_level
              类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
              默认值notice
              描述

              允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

            • hibernate_after
              类型Duration
              默认值"5s"
              描述

              指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
              表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
              例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
              Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • dhfile
              类型String
              描述

              如果协商使用 Diffie-Hellman 密钥交换的密码套件,则服务器将使用包含 PEM 编码的 Diffie-Hellman 参数的文件的路径。如果未指定,则使用默认参数。
              注意:TLS 1.3 不支持dhfile选项。

            • fail_if_no_peer_cert
              类型Boolean
              默认值false
              描述

              此选项仅在 verify 设置为 verify_peer 时有效。 如果设置为 true,那么 EMQX 将在客户端未能提供证书时拒绝该连接。 如果设置为 false,则 EMQX 将接受未提供证书的客户端。

            • honor_cipher_order
              类型Boolean
              默认值true
              描述

              一个重要的安全设置如果启用此设置,服务器将从客户端支持的密码套件列表中优先选择它最偏好的密码套件(由 ciphers 指定,偏好程度从左至右依次降低),从而忽略客户端的首选项。使用服务器的首选项通常更好,因为更有可能正确配置服务器。

            • client_renegotiation
              类型Boolean
              默认值true
              描述

              在支持客户机发起的重新协商的协议中,这种操作的资源成本对于服务器来说高于客户机。 这可能会成为拒绝服务攻击的载体。 SSL 应用程序已经采取措施来反击此类尝试,但通过将此选项设置为 false,可以严格禁用客户端发起的重新协商。 默认值为 true。请注意,由于基础密码套件可以加密的消息数量有限,禁用重新协商可能会导致长期连接变得不可用。

            • handshake_timeout
              类型Duration
              默认值"15s"
              描述

              握手完成所允许的最长时间
              表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
              例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
              Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • gc_after_handshake
              类型Boolean
              默认值false
              描述

              内存使用调优。如果启用,将在 TLS/SSL 握手完成后立即执行垃圾回收。TLS/SSL 握手建立后立即进行 GC。

            • ocsp
              类型Struct(ocsp)

              ocsp

              • enable_ocsp_stapling
                类型Boolean
                默认值false
                描述

                是否为监听器启用 OCSP Stapling 功能。 如果设置为 true,需要定义 OCSP Responder 的 URL 和证书签发者的 PEM 文件路径。

              • responder_url
                类型String
                描述

                用于检查服务器证书的 OCSP Responder 的 URL。

              • issuer_pem
                类型String
                描述

                服务器证书的 OCSP 签发者的 PEM 编码证书。

              • refresh_interval
                类型Duration
                默认值"5m"
                描述

                为服务器刷新 OCSP 响应的周期。
                表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
                例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
                Duration 等价于 Duration(ms)。单位部分不区分大小写。

              • refresh_http_timeout
                类型Duration
                默认值"15s"
                描述

                检查 OCSP 响应时,HTTP 请求的超时。
                表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
                例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
                Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • enable_crl_check
              类型Boolean
              默认值false
              描述

              是否为该监听器启用 CRL 检查。

        • udp
          类型Map($name->Struct(udp_listener))
          描述

          从监听器名称到配置参数的映射。

          udp_listener

          • health_check
            类型Struct(udp_health_check)
            描述

            某些云平台使用 请求-响应 机制来检查 UDP 端口是否健康,可以在此配置这对机制。

            udp_health_check

            • request
              类型String
              描述

              请求的内容。

            • reply
              类型String
              描述

              回复的内容。

          • udp_options
            类型Struct(udp_opts)

            udp_opts

            • active_n
              类型Integer
              默认值100
              描述

              为 Socket 指定 {active, N} 选项。 参见:https://erlang.org/doc/man/inet.html#setopts-2

            • recbuf
              类型Bytesize
              描述

              Socket 在内核空间接收缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • sndbuf
              类型Bytesize
              描述

              Socket 在内核空间发送缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • buffer
              类型Bytesize
              描述

              Socket 在用户空间的缓冲区大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • reuseaddr
              类型Boolean
              默认值true
              描述

              允许重用本地处于 TIME_WAIT 的端口号。

          • enable
            类型Boolean
            默认值true
            描述

            是否启用该监听器。

          • bind
            类型String
            描述

            监听器绑定的 IP 地址或端口。

          • max_connections
            类型OneOf(Integer(1..+inf),String("infinity"))
            默认值1024
            描述

            监听器支持的最大连接数。

          • max_conn_rate
            类型Integer
            默认值1000
            描述

            监听器允许的最大连接速率。

          • enable_authn
            类型Boolean
            默认值true
            描述

            配置 true (默认值)启用客户端进行身份认证。 配置 false 时,将不对客户端做任何认证。

          • mountpoint
            类型String
            描述

            发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在 listeners.tcp.\<name>.mountpoint 设置为 some_tenant 的情况下订阅 t, 则客户端实际上订阅了 some_tenant/t 主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题 t 发送消息, 则该消息被路由到所有订阅了 some_tenant/t 的客户端,因此客户端 A 将收到该消息,带有 主题名称t。 设置为 "" 以禁用该功能。 挂载点字符串中可用的变量:

            • ${clientid}:clientid
            • ${username}:用户名
          • access_rules
            类型Array(String)
            默认值[]
            描述

            由字符串规则组成的访问规则列表,以限制或允许某些地址的访问。规则之间存在前后顺序。规则的格式为 allow | deny <address> | <CIDR> | all
            例如:
            ["deny 192.168.1.1", "allow 192.168.1.0/24", "deny, all"]

        • dtls
          类型Map($name->Struct(dtls_listener))
          描述

          从监听器名称到配置参数的映射。

          dtls_listener

          • acceptors
            类型Integer
            默认值16
            描述

            Acceptor 进程池大小。

          • health_check
            类型Struct(udp_health_check)
            描述

            某些云平台使用 请求-响应 机制来检查 UDP 端口是否健康,可以在此配置这对机制。

            udp_health_check

            • request
              类型String
              描述

              请求的内容。

            • reply
              类型String
              描述

              回复的内容。

          • udp_options
            类型Struct(udp_opts)

            udp_opts

            • active_n
              类型Integer
              默认值100
              描述

              为 Socket 指定 {active, N} 选项。 参见:https://erlang.org/doc/man/inet.html#setopts-2

            • recbuf
              类型Bytesize
              描述

              Socket 在内核空间接收缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • sndbuf
              类型Bytesize
              描述

              Socket 在内核空间发送缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • buffer
              类型Bytesize
              描述

              Socket 在用户空间的缓冲区大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • reuseaddr
              类型Boolean
              默认值true
              描述

              允许重用本地处于 TIME_WAIT 的端口号。

          • enable
            类型Boolean
            默认值true
            描述

            是否启用该监听器。

          • bind
            类型String
            描述

            监听器绑定的 IP 地址或端口。

          • max_connections
            类型OneOf(Integer(1..+inf),String("infinity"))
            默认值1024
            描述

            监听器支持的最大连接数。

          • max_conn_rate
            类型Integer
            默认值1000
            描述

            监听器允许的最大连接速率。

          • enable_authn
            类型Boolean
            默认值true
            描述

            配置 true (默认值)启用客户端进行身份认证。 配置 false 时,将不对客户端做任何认证。

          • mountpoint
            类型String
            描述

            发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在 listeners.tcp.\<name>.mountpoint 设置为 some_tenant 的情况下订阅 t, 则客户端实际上订阅了 some_tenant/t 主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题 t 发送消息, 则该消息被路由到所有订阅了 some_tenant/t 的客户端,因此客户端 A 将收到该消息,带有 主题名称t。 设置为 "" 以禁用该功能。 挂载点字符串中可用的变量:

            • ${clientid}:clientid
            • ${username}:用户名
          • access_rules
            类型Array(String)
            默认值[]
            描述

            由字符串规则组成的访问规则列表,以限制或允许某些地址的访问。规则之间存在前后顺序。规则的格式为 allow | deny <address> | <CIDR> | all
            例如:
            ["deny 192.168.1.1", "allow 192.168.1.0/24", "deny, all"]

          • dtls_options
            类型Struct(dtls_opts)
            描述

            DTLS Socket 配置

            dtls_opts

            • cacertfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/cacert.pem"
              描述

              受信任的 PEM 格式 CA 证书捆绑文件
              此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
              注意:从文件中失效(删除)证书不会影响已建立的连接。

            • cacerts
              类型Boolean
              描述

              Deprecated since 5.1.4.

            • certfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/cert.pem"
              描述

              PEM 格式证书链文件
              此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

            • keyfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/key.pem"
              描述

              PEM 格式的私钥文件。

            • verify
              类型Enum(verify_peer,verify_none)
              默认值verify_none
              描述

              启用或禁用对等验证。

            • reuse_sessions
              类型Boolean
              默认值true
              描述

              启用 TLS 会话重用。

            • depth
              类型Integer(0..+inf)
              默认值10
              描述

              在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
              如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
              如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

            • password
              类型String
              描述

              包含用户密码的字符串。仅在私钥文件受密码保护时使用。

            • versions
              类型Array(String)
              默认值["dtlsv1.2"]
              描述

              支持所有 TLS/DTLS 版本
              注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

            • ciphers
              类型Array(String)
              默认值[]
              描述

              此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
              密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

              名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
              注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

              例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


              注:PSK 的 Ciphers 不支持 tlsv1.3
              如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
              PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
            • secure_renegotiate
              类型Boolean
              默认值true
              描述

              指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
              如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
              当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

            • log_level
              类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
              默认值notice
              描述

              允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

            • hibernate_after
              类型Duration
              默认值"5s"
              描述

              指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
              表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
              例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
              Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • dhfile
              类型String
              描述

              如果协商使用 Diffie-Hellman 密钥交换的密码套件,则服务器将使用包含 PEM 编码的 Diffie-Hellman 参数的文件的路径。如果未指定,则使用默认参数。
              注意:TLS 1.3 不支持dhfile选项。

            • fail_if_no_peer_cert
              类型Boolean
              默认值false
              描述

              此选项仅在 verify 设置为 verify_peer 时有效。 如果设置为 true,那么 EMQX 将在客户端未能提供证书时拒绝该连接。 如果设置为 false,则 EMQX 将接受未提供证书的客户端。

            • honor_cipher_order
              类型Boolean
              默认值true
              描述

              一个重要的安全设置如果启用此设置,服务器将从客户端支持的密码套件列表中优先选择它最偏好的密码套件(由 ciphers 指定,偏好程度从左至右依次降低),从而忽略客户端的首选项。使用服务器的首选项通常更好,因为更有可能正确配置服务器。

            • client_renegotiation
              类型Boolean
              默认值true
              描述

              在支持客户机发起的重新协商的协议中,这种操作的资源成本对于服务器来说高于客户机。 这可能会成为拒绝服务攻击的载体。 SSL 应用程序已经采取措施来反击此类尝试,但通过将此选项设置为 false,可以严格禁用客户端发起的重新协商。 默认值为 true。请注意,由于基础密码套件可以加密的消息数量有限,禁用重新协商可能会导致长期连接变得不可用。

            • handshake_timeout
              类型Duration
              默认值"15s"
              描述

              握手完成所允许的最长时间
              表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
              例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
              Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • gc_after_handshake
              类型Boolean
              默认值false
              描述

              内存使用调优。如果启用,将在 TLS/SSL 握手完成后立即执行垃圾回收。TLS/SSL 握手建立后立即进行 GC。

            • ocsp
              类型Struct(ocsp)

              ocsp

              • enable_ocsp_stapling
                类型Boolean
                默认值false
                描述

                是否为监听器启用 OCSP Stapling 功能。 如果设置为 true,需要定义 OCSP Responder 的 URL 和证书签发者的 PEM 文件路径。

              • responder_url
                类型String
                描述

                用于检查服务器证书的 OCSP Responder 的 URL。

              • issuer_pem
                类型String
                描述

                服务器证书的 OCSP 签发者的 PEM 编码证书。

              • refresh_interval
                类型Duration
                默认值"5m"
                描述

                为服务器刷新 OCSP 响应的周期。
                表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
                例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
                Duration 等价于 Duration(ms)。单位部分不区分大小写。

              • refresh_http_timeout
                类型Duration
                默认值"15s"
                描述

                检查 OCSP 响应时,HTTP 请求的超时。
                表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
                例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
                Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • enable_crl_check
              类型Boolean
              默认值false
              描述

              是否为该监听器启用 CRL 检查。

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该网关

      • enable_stats

        类型Boolean
        默认值true
        描述

        是否开启客户端统计

      • idle_timeout

        类型Duration
        默认值"30s"
        描述

        客户端连接过程的空闲时间。该配置用于:

        1. 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
        2. 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。
      • clientinfo_override

        类型Struct(clientinfo_override)
        描述

        ClientInfo 重写。

        clientinfo_override

        • username
          类型String
          描述

          username 重写模板

        • password
          类型String
          描述

          password 重写模板

        • clientid
          类型String
          描述

          clientid 重写模板

    • lwm2m

      类型Struct(lwm2m)

      lwm2m

      • xml_dir

        类型String
        描述

        LwM2M Resource 定义的 XML 文件目录路径。

      • lifetime_min

        类型Duration
        默认值"15s"
        描述

        允许 LwM2M 客户端允许设置的心跳最小值。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • lifetime_max

        类型Duration
        默认值"86400s"
        描述

        允许 LwM2M 客户端允许设置的心跳最大值。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • qmode_time_window

        类型Duration(s)
        默认值"22s"
        描述

        在 QMode 模式下,LwM2M 网关认为网络链接有效的时间窗口的值。 例如,在收到客户端的更新信息后,在这个时间窗口内的任何信息都会直接发送到 LwM2M 客户端,而超过这个时间窗口的所有信息都会暂时储存在内存中。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • auto_observe

        类型Boolean
        默认值false
        描述

        自动 Observe REGISTER 数据包的 Object 列表。

      • update_msg_publish_condition

        类型Enum(always,contains_object_list)
        默认值contains_object_list
        描述

        发布 UPDATE 事件消息的策略。

        • always: 只要收到 UPDATE 请求,就发送更新事件。
        • contains_object_list: 仅当 UPDATE 请求携带 Object 列表时才发送更新事件。
      • translators

        类型Struct(lwm2m_translators)
        描述

        LwM2M 网关订阅/发布消息的主题映射配置。

        lwm2m_translators

        • command
          类型Struct(translator)
          描述

          下行命令主题。 对于每个成功上线的新 LwM2M 客户端,网关会创建一个订阅关系来接收下行消息并将其发送给客户端

          translator

          • topic
            类型String
            描述

            主题名称

          • qos
            类型Integer(0..2)
            默认值0
            描述

            QoS 等级

        • response
          类型Struct(translator)
          描述

          用于网关发布来自 LwM2M 客户端的确认事件的主题。

          translator

          • topic
            类型String
            描述

            主题名称

          • qos
            类型Integer(0..2)
            默认值0
            描述

            QoS 等级

        • notify
          类型Struct(translator)
          描述

          用于发布来自 LwM2M 客户端的通知事件的主题。 在成功 Observe 到 LwM2M 客户端的资源后,如果客户端报告任何资源状态的变化,网关将通过该主题发送通知事件

          translator

          • topic
            类型String
            描述

            主题名称

          • qos
            类型Integer(0..2)
            默认值0
            描述

            QoS 等级

        • register
          类型Struct(translator)
          描述

          用于发布来自 LwM2M 客户端的注册事件的主题。

          translator

          • topic
            类型String
            描述

            主题名称

          • qos
            类型Integer(0..2)
            默认值0
            描述

            QoS 等级

        • update
          类型Struct(translator)
          描述

          用于发布来自 LwM2M 客户端的更新事件的主题。

          translator

          • topic
            类型String
            描述

            主题名称

          • qos
            类型Integer(0..2)
            默认值0
            描述

            QoS 等级

      • mountpoint

        类型String
        默认值"lwm2m/${endpoint_name}/"
        描述

        发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在 listeners.tcp.\<name>.mountpoint 设置为 some_tenant 的情况下订阅 t, 则客户端实际上订阅了 some_tenant/t 主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题 t 发送消息, 则该消息被路由到所有订阅了 some_tenant/t 的客户端,因此客户端 A 将收到该消息,带有 主题名称t。 设置为 "" 以禁用该功能。 挂载点字符串中可用的变量:

        • ${clientid}:clientid
        • ${username}:用户名
      • listeners

        类型Struct(udp_listeners)

        udp_listeners

        • udp
          类型Map($name->Struct(udp_listener))
          描述

          从监听器名称到配置参数的映射。

          udp_listener

          • health_check
            类型Struct(udp_health_check)
            描述

            某些云平台使用 请求-响应 机制来检查 UDP 端口是否健康,可以在此配置这对机制。

            udp_health_check

            • request
              类型String
              描述

              请求的内容。

            • reply
              类型String
              描述

              回复的内容。

          • udp_options
            类型Struct(udp_opts)

            udp_opts

            • active_n
              类型Integer
              默认值100
              描述

              为 Socket 指定 {active, N} 选项。 参见:https://erlang.org/doc/man/inet.html#setopts-2

            • recbuf
              类型Bytesize
              描述

              Socket 在内核空间接收缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • sndbuf
              类型Bytesize
              描述

              Socket 在内核空间发送缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • buffer
              类型Bytesize
              描述

              Socket 在用户空间的缓冲区大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • reuseaddr
              类型Boolean
              默认值true
              描述

              允许重用本地处于 TIME_WAIT 的端口号。

          • enable
            类型Boolean
            默认值true
            描述

            是否启用该监听器。

          • bind
            类型String
            描述

            监听器绑定的 IP 地址或端口。

          • max_connections
            类型OneOf(Integer(1..+inf),String("infinity"))
            默认值1024
            描述

            监听器支持的最大连接数。

          • max_conn_rate
            类型Integer
            默认值1000
            描述

            监听器允许的最大连接速率。

          • enable_authn
            类型Boolean
            默认值true
            描述

            配置 true (默认值)启用客户端进行身份认证。 配置 false 时,将不对客户端做任何认证。

          • mountpoint
            类型String
            描述

            发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在 listeners.tcp.\<name>.mountpoint 设置为 some_tenant 的情况下订阅 t, 则客户端实际上订阅了 some_tenant/t 主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题 t 发送消息, 则该消息被路由到所有订阅了 some_tenant/t 的客户端,因此客户端 A 将收到该消息,带有 主题名称t。 设置为 "" 以禁用该功能。 挂载点字符串中可用的变量:

            • ${clientid}:clientid
            • ${username}:用户名
          • access_rules
            类型Array(String)
            默认值[]
            描述

            由字符串规则组成的访问规则列表,以限制或允许某些地址的访问。规则之间存在前后顺序。规则的格式为 allow | deny <address> | <CIDR> | all
            例如:
            ["deny 192.168.1.1", "allow 192.168.1.0/24", "deny, all"]

        • dtls
          类型Map($name->Struct(dtls_listener))
          描述

          从监听器名称到配置参数的映射。

          dtls_listener

          • acceptors
            类型Integer
            默认值16
            描述

            Acceptor 进程池大小。

          • health_check
            类型Struct(udp_health_check)
            描述

            某些云平台使用 请求-响应 机制来检查 UDP 端口是否健康,可以在此配置这对机制。

            udp_health_check

            • request
              类型String
              描述

              请求的内容。

            • reply
              类型String
              描述

              回复的内容。

          • udp_options
            类型Struct(udp_opts)

            udp_opts

            • active_n
              类型Integer
              默认值100
              描述

              为 Socket 指定 {active, N} 选项。 参见:https://erlang.org/doc/man/inet.html#setopts-2

            • recbuf
              类型Bytesize
              描述

              Socket 在内核空间接收缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • sndbuf
              类型Bytesize
              描述

              Socket 在内核空间发送缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • buffer
              类型Bytesize
              描述

              Socket 在用户空间的缓冲区大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • reuseaddr
              类型Boolean
              默认值true
              描述

              允许重用本地处于 TIME_WAIT 的端口号。

          • enable
            类型Boolean
            默认值true
            描述

            是否启用该监听器。

          • bind
            类型String
            描述

            监听器绑定的 IP 地址或端口。

          • max_connections
            类型OneOf(Integer(1..+inf),String("infinity"))
            默认值1024
            描述

            监听器支持的最大连接数。

          • max_conn_rate
            类型Integer
            默认值1000
            描述

            监听器允许的最大连接速率。

          • enable_authn
            类型Boolean
            默认值true
            描述

            配置 true (默认值)启用客户端进行身份认证。 配置 false 时,将不对客户端做任何认证。

          • mountpoint
            类型String
            描述

            发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在 listeners.tcp.\<name>.mountpoint 设置为 some_tenant 的情况下订阅 t, 则客户端实际上订阅了 some_tenant/t 主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题 t 发送消息, 则该消息被路由到所有订阅了 some_tenant/t 的客户端,因此客户端 A 将收到该消息,带有 主题名称t。 设置为 "" 以禁用该功能。 挂载点字符串中可用的变量:

            • ${clientid}:clientid
            • ${username}:用户名
          • access_rules
            类型Array(String)
            默认值[]
            描述

            由字符串规则组成的访问规则列表,以限制或允许某些地址的访问。规则之间存在前后顺序。规则的格式为 allow | deny <address> | <CIDR> | all
            例如:
            ["deny 192.168.1.1", "allow 192.168.1.0/24", "deny, all"]

          • dtls_options
            类型Struct(dtls_opts)
            描述

            DTLS Socket 配置

            dtls_opts

            • cacertfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/cacert.pem"
              描述

              受信任的 PEM 格式 CA 证书捆绑文件
              此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
              注意:从文件中失效(删除)证书不会影响已建立的连接。

            • cacerts
              类型Boolean
              描述

              Deprecated since 5.1.4.

            • certfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/cert.pem"
              描述

              PEM 格式证书链文件
              此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

            • keyfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/key.pem"
              描述

              PEM 格式的私钥文件。

            • verify
              类型Enum(verify_peer,verify_none)
              默认值verify_none
              描述

              启用或禁用对等验证。

            • reuse_sessions
              类型Boolean
              默认值true
              描述

              启用 TLS 会话重用。

            • depth
              类型Integer(0..+inf)
              默认值10
              描述

              在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
              如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
              如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

            • password
              类型String
              描述

              包含用户密码的字符串。仅在私钥文件受密码保护时使用。

            • versions
              类型Array(String)
              默认值["dtlsv1.2"]
              描述

              支持所有 TLS/DTLS 版本
              注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

            • ciphers
              类型Array(String)
              默认值[]
              描述

              此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
              密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

              名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
              注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

              例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


              注:PSK 的 Ciphers 不支持 tlsv1.3
              如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
              PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
            • secure_renegotiate
              类型Boolean
              默认值true
              描述

              指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
              如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
              当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

            • log_level
              类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
              默认值notice
              描述

              允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

            • hibernate_after
              类型Duration
              默认值"5s"
              描述

              指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
              表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
              例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
              Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • dhfile
              类型String
              描述

              如果协商使用 Diffie-Hellman 密钥交换的密码套件,则服务器将使用包含 PEM 编码的 Diffie-Hellman 参数的文件的路径。如果未指定,则使用默认参数。
              注意:TLS 1.3 不支持dhfile选项。

            • fail_if_no_peer_cert
              类型Boolean
              默认值false
              描述

              此选项仅在 verify 设置为 verify_peer 时有效。 如果设置为 true,那么 EMQX 将在客户端未能提供证书时拒绝该连接。 如果设置为 false,则 EMQX 将接受未提供证书的客户端。

            • honor_cipher_order
              类型Boolean
              默认值true
              描述

              一个重要的安全设置如果启用此设置,服务器将从客户端支持的密码套件列表中优先选择它最偏好的密码套件(由 ciphers 指定,偏好程度从左至右依次降低),从而忽略客户端的首选项。使用服务器的首选项通常更好,因为更有可能正确配置服务器。

            • client_renegotiation
              类型Boolean
              默认值true
              描述

              在支持客户机发起的重新协商的协议中,这种操作的资源成本对于服务器来说高于客户机。 这可能会成为拒绝服务攻击的载体。 SSL 应用程序已经采取措施来反击此类尝试,但通过将此选项设置为 false,可以严格禁用客户端发起的重新协商。 默认值为 true。请注意,由于基础密码套件可以加密的消息数量有限,禁用重新协商可能会导致长期连接变得不可用。

            • handshake_timeout
              类型Duration
              默认值"15s"
              描述

              握手完成所允许的最长时间
              表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
              例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
              Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • gc_after_handshake
              类型Boolean
              默认值false
              描述

              内存使用调优。如果启用,将在 TLS/SSL 握手完成后立即执行垃圾回收。TLS/SSL 握手建立后立即进行 GC。

            • ocsp
              类型Struct(ocsp)

              ocsp

              • enable_ocsp_stapling
                类型Boolean
                默认值false
                描述

                是否为监听器启用 OCSP Stapling 功能。 如果设置为 true,需要定义 OCSP Responder 的 URL 和证书签发者的 PEM 文件路径。

              • responder_url
                类型String
                描述

                用于检查服务器证书的 OCSP Responder 的 URL。

              • issuer_pem
                类型String
                描述

                服务器证书的 OCSP 签发者的 PEM 编码证书。

              • refresh_interval
                类型Duration
                默认值"5m"
                描述

                为服务器刷新 OCSP 响应的周期。
                表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
                例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
                Duration 等价于 Duration(ms)。单位部分不区分大小写。

              • refresh_http_timeout
                类型Duration
                默认值"15s"
                描述

                检查 OCSP 响应时,HTTP 请求的超时。
                表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
                例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
                Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • enable_crl_check
              类型Boolean
              默认值false
              描述

              是否为该监听器启用 CRL 检查。

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该网关

      • enable_stats

        类型Boolean
        默认值true
        描述

        是否开启客户端统计

      • idle_timeout

        类型Duration
        默认值"30s"
        描述

        客户端连接过程的空闲时间。该配置用于:

        1. 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
        2. 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。
      • clientinfo_override

        类型Struct(clientinfo_override)
        描述

        ClientInfo 重写。

        clientinfo_override

        • username
          类型String
          描述

          username 重写模板

        • password
          类型String
          描述

          password 重写模板

        • clientid
          类型String
          描述

          clientid 重写模板

    • mqttsn

      类型Struct(mqttsn)

      mqttsn

      • gateway_id

        类型Integer
        默认值1
        描述

        MQTT-SN 网关 ID。 当 broadcast 打开时,MQTT-SN 网关会使用该 ID 来广播 ADVERTISE 消息

      • broadcast

        类型Boolean
        默认值false
        描述

        是否周期性广播 ADVERTISE 消息

      • enable_qos3

        类型Boolean
        默认值true
        描述

        是否允许无连接的客户端发送 QoS 等于 -1 的消息。 该功能主要用于支持轻量的 MQTT-SN 客户端实现,它不会向网关建立连接,注册主题,也不会发起订阅;它只使用 QoS 为 -1 来发布消息

      • subs_resume

        类型Boolean
        默认值false
        描述

        在会话被重用后,网关是否主动向客户端注册对已订阅主题名称

      • predefined

        类型Array(Struct(mqttsn_predefined))
        默认值[]
        描述

        预定义主题列表。 预定义的主题列表,是一组 主题 ID 和 主题名称 的映射关系。使用预先定义的主题列表,可以减少 MQTT-SN 客户端和网关对于固定主题的注册请求

        mqttsn_predefined

        • id
          类型Integer(1..1024)
          描述

          主题 ID。范围:1-65535

        • topic
          类型String
          描述

          主题名称。注:不支持通配符

      • mountpoint

        类型String
        默认值""
        描述

        发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在 listeners.tcp.\<name>.mountpoint 设置为 some_tenant 的情况下订阅 t, 则客户端实际上订阅了 some_tenant/t 主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题 t 发送消息, 则该消息被路由到所有订阅了 some_tenant/t 的客户端,因此客户端 A 将收到该消息,带有 主题名称t。 设置为 "" 以禁用该功能。 挂载点字符串中可用的变量:

        • ${clientid}:clientid
        • ${username}:用户名
      • listeners

        类型Struct(udp_listeners)

        udp_listeners

        • udp
          类型Map($name->Struct(udp_listener))
          描述

          从监听器名称到配置参数的映射。

          udp_listener

          • health_check
            类型Struct(udp_health_check)
            描述

            某些云平台使用 请求-响应 机制来检查 UDP 端口是否健康,可以在此配置这对机制。

            udp_health_check

            • request
              类型String
              描述

              请求的内容。

            • reply
              类型String
              描述

              回复的内容。

          • udp_options
            类型Struct(udp_opts)

            udp_opts

            • active_n
              类型Integer
              默认值100
              描述

              为 Socket 指定 {active, N} 选项。 参见:https://erlang.org/doc/man/inet.html#setopts-2

            • recbuf
              类型Bytesize
              描述

              Socket 在内核空间接收缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • sndbuf
              类型Bytesize
              描述

              Socket 在内核空间发送缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • buffer
              类型Bytesize
              描述

              Socket 在用户空间的缓冲区大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • reuseaddr
              类型Boolean
              默认值true
              描述

              允许重用本地处于 TIME_WAIT 的端口号。

          • enable
            类型Boolean
            默认值true
            描述

            是否启用该监听器。

          • bind
            类型String
            描述

            监听器绑定的 IP 地址或端口。

          • max_connections
            类型OneOf(Integer(1..+inf),String("infinity"))
            默认值1024
            描述

            监听器支持的最大连接数。

          • max_conn_rate
            类型Integer
            默认值1000
            描述

            监听器允许的最大连接速率。

          • enable_authn
            类型Boolean
            默认值true
            描述

            配置 true (默认值)启用客户端进行身份认证。 配置 false 时,将不对客户端做任何认证。

          • mountpoint
            类型String
            描述

            发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在 listeners.tcp.\<name>.mountpoint 设置为 some_tenant 的情况下订阅 t, 则客户端实际上订阅了 some_tenant/t 主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题 t 发送消息, 则该消息被路由到所有订阅了 some_tenant/t 的客户端,因此客户端 A 将收到该消息,带有 主题名称t。 设置为 "" 以禁用该功能。 挂载点字符串中可用的变量:

            • ${clientid}:clientid
            • ${username}:用户名
          • access_rules
            类型Array(String)
            默认值[]
            描述

            由字符串规则组成的访问规则列表,以限制或允许某些地址的访问。规则之间存在前后顺序。规则的格式为 allow | deny <address> | <CIDR> | all
            例如:
            ["deny 192.168.1.1", "allow 192.168.1.0/24", "deny, all"]

        • dtls
          类型Map($name->Struct(dtls_listener))
          描述

          从监听器名称到配置参数的映射。

          dtls_listener

          • acceptors
            类型Integer
            默认值16
            描述

            Acceptor 进程池大小。

          • health_check
            类型Struct(udp_health_check)
            描述

            某些云平台使用 请求-响应 机制来检查 UDP 端口是否健康,可以在此配置这对机制。

            udp_health_check

            • request
              类型String
              描述

              请求的内容。

            • reply
              类型String
              描述

              回复的内容。

          • udp_options
            类型Struct(udp_opts)

            udp_opts

            • active_n
              类型Integer
              默认值100
              描述

              为 Socket 指定 {active, N} 选项。 参见:https://erlang.org/doc/man/inet.html#setopts-2

            • recbuf
              类型Bytesize
              描述

              Socket 在内核空间接收缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • sndbuf
              类型Bytesize
              描述

              Socket 在内核空间发送缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • buffer
              类型Bytesize
              描述

              Socket 在用户空间的缓冲区大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • reuseaddr
              类型Boolean
              默认值true
              描述

              允许重用本地处于 TIME_WAIT 的端口号。

          • enable
            类型Boolean
            默认值true
            描述

            是否启用该监听器。

          • bind
            类型String
            描述

            监听器绑定的 IP 地址或端口。

          • max_connections
            类型OneOf(Integer(1..+inf),String("infinity"))
            默认值1024
            描述

            监听器支持的最大连接数。

          • max_conn_rate
            类型Integer
            默认值1000
            描述

            监听器允许的最大连接速率。

          • enable_authn
            类型Boolean
            默认值true
            描述

            配置 true (默认值)启用客户端进行身份认证。 配置 false 时,将不对客户端做任何认证。

          • mountpoint
            类型String
            描述

            发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在 listeners.tcp.\<name>.mountpoint 设置为 some_tenant 的情况下订阅 t, 则客户端实际上订阅了 some_tenant/t 主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题 t 发送消息, 则该消息被路由到所有订阅了 some_tenant/t 的客户端,因此客户端 A 将收到该消息,带有 主题名称t。 设置为 "" 以禁用该功能。 挂载点字符串中可用的变量:

            • ${clientid}:clientid
            • ${username}:用户名
          • access_rules
            类型Array(String)
            默认值[]
            描述

            由字符串规则组成的访问规则列表,以限制或允许某些地址的访问。规则之间存在前后顺序。规则的格式为 allow | deny <address> | <CIDR> | all
            例如:
            ["deny 192.168.1.1", "allow 192.168.1.0/24", "deny, all"]

          • dtls_options
            类型Struct(dtls_opts)
            描述

            DTLS Socket 配置

            dtls_opts

            • cacertfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/cacert.pem"
              描述

              受信任的 PEM 格式 CA 证书捆绑文件
              此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
              注意:从文件中失效(删除)证书不会影响已建立的连接。

            • cacerts
              类型Boolean
              描述

              Deprecated since 5.1.4.

            • certfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/cert.pem"
              描述

              PEM 格式证书链文件
              此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

            • keyfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/key.pem"
              描述

              PEM 格式的私钥文件。

            • verify
              类型Enum(verify_peer,verify_none)
              默认值verify_none
              描述

              启用或禁用对等验证。

            • reuse_sessions
              类型Boolean
              默认值true
              描述

              启用 TLS 会话重用。

            • depth
              类型Integer(0..+inf)
              默认值10
              描述

              在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
              如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
              如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

            • password
              类型String
              描述

              包含用户密码的字符串。仅在私钥文件受密码保护时使用。

            • versions
              类型Array(String)
              默认值["dtlsv1.2"]
              描述

              支持所有 TLS/DTLS 版本
              注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

            • ciphers
              类型Array(String)
              默认值[]
              描述

              此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
              密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

              名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
              注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

              例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


              注:PSK 的 Ciphers 不支持 tlsv1.3
              如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
              PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
            • secure_renegotiate
              类型Boolean
              默认值true
              描述

              指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
              如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
              当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

            • log_level
              类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
              默认值notice
              描述

              允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

            • hibernate_after
              类型Duration
              默认值"5s"
              描述

              指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
              表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
              例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
              Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • dhfile
              类型String
              描述

              如果协商使用 Diffie-Hellman 密钥交换的密码套件,则服务器将使用包含 PEM 编码的 Diffie-Hellman 参数的文件的路径。如果未指定,则使用默认参数。
              注意:TLS 1.3 不支持dhfile选项。

            • fail_if_no_peer_cert
              类型Boolean
              默认值false
              描述

              此选项仅在 verify 设置为 verify_peer 时有效。 如果设置为 true,那么 EMQX 将在客户端未能提供证书时拒绝该连接。 如果设置为 false,则 EMQX 将接受未提供证书的客户端。

            • honor_cipher_order
              类型Boolean
              默认值true
              描述

              一个重要的安全设置如果启用此设置,服务器将从客户端支持的密码套件列表中优先选择它最偏好的密码套件(由 ciphers 指定,偏好程度从左至右依次降低),从而忽略客户端的首选项。使用服务器的首选项通常更好,因为更有可能正确配置服务器。

            • client_renegotiation
              类型Boolean
              默认值true
              描述

              在支持客户机发起的重新协商的协议中,这种操作的资源成本对于服务器来说高于客户机。 这可能会成为拒绝服务攻击的载体。 SSL 应用程序已经采取措施来反击此类尝试,但通过将此选项设置为 false,可以严格禁用客户端发起的重新协商。 默认值为 true。请注意,由于基础密码套件可以加密的消息数量有限,禁用重新协商可能会导致长期连接变得不可用。

            • handshake_timeout
              类型Duration
              默认值"15s"
              描述

              握手完成所允许的最长时间
              表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
              例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
              Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • gc_after_handshake
              类型Boolean
              默认值false
              描述

              内存使用调优。如果启用,将在 TLS/SSL 握手完成后立即执行垃圾回收。TLS/SSL 握手建立后立即进行 GC。

            • ocsp
              类型Struct(ocsp)

              ocsp

              • enable_ocsp_stapling
                类型Boolean
                默认值false
                描述

                是否为监听器启用 OCSP Stapling 功能。 如果设置为 true,需要定义 OCSP Responder 的 URL 和证书签发者的 PEM 文件路径。

              • responder_url
                类型String
                描述

                用于检查服务器证书的 OCSP Responder 的 URL。

              • issuer_pem
                类型String
                描述

                服务器证书的 OCSP 签发者的 PEM 编码证书。

              • refresh_interval
                类型Duration
                默认值"5m"
                描述

                为服务器刷新 OCSP 响应的周期。
                表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
                例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
                Duration 等价于 Duration(ms)。单位部分不区分大小写。

              • refresh_http_timeout
                类型Duration
                默认值"15s"
                描述

                检查 OCSP 响应时,HTTP 请求的超时。
                表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
                例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
                Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • enable_crl_check
              类型Boolean
              默认值false
              描述

              是否为该监听器启用 CRL 检查。

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该网关

      • enable_stats

        类型Boolean
        默认值true
        描述

        是否开启客户端统计

      • idle_timeout

        类型Duration
        默认值"30s"
        描述

        客户端连接过程的空闲时间。该配置用于:

        1. 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
        2. 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。
      • clientinfo_override

        类型Struct(clientinfo_override)
        描述

        ClientInfo 重写。

        clientinfo_override

        • username
          类型String
          描述

          username 重写模板

        • password
          类型String
          描述

          password 重写模板

        • clientid
          类型String
          描述

          clientid 重写模板

    • stomp

      类型Struct(stomp)

      stomp

      • frame

        类型Struct(stomp_frame)

        stomp_frame

        • max_headers
          类型Integer(0..+inf)
          默认值10
          描述

          头部的最大数量

        • max_headers_length
          类型Integer(0..+inf)
          默认值1024
          描述

          允许的 Header 字符串的最大长度

        • max_body_length
          类型Integer
          默认值65536
          描述

          每个 Stomp 数据包允许的 Body 的最大字节数

      • mountpoint

        类型String
        默认值""
        描述

        发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在 listeners.tcp.\<name>.mountpoint 设置为 some_tenant 的情况下订阅 t, 则客户端实际上订阅了 some_tenant/t 主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题 t 发送消息, 则该消息被路由到所有订阅了 some_tenant/t 的客户端,因此客户端 A 将收到该消息,带有 主题名称t。 设置为 "" 以禁用该功能。 挂载点字符串中可用的变量:

        • ${clientid}:clientid
        • ${username}:用户名
      • listeners

        类型Struct(tcp_listeners)

        tcp_listeners

        • tcp
          类型Map($name->Struct(tcp_listener))
          描述

          从监听器名称到配置参数的映射。

          tcp_listener

          • acceptors
            类型Integer
            默认值16
            描述

            Acceptor 进程池大小。

          • tcp_options
            类型Struct(tcp_opts)
            描述

            TCP Socket 配置。

            tcp_opts

            • active_n
              类型Integer(0..+inf)
              默认值100
              描述

              为此套接字指定{active,N}选项
              See: https://erlang.org/doc/man/inet.html#setopts-2

            • backlog
              类型Integer(1..+inf)
              默认值1024
              描述

              TCP backlog 定义了挂起连接队列可以增长到的最大长度。

            • send_timeout
              类型Duration
              默认值"15s"
              描述

              进程因向繁忙的套接字发送数据而挂起的最长时间,超时后将关闭此 TCP 连接与进程。
              进程解除挂起需要套接字解除繁忙状态,即堆积在 Erlang 内部缓冲区中的数据从高位水线(由 high_watermark 指定)降至低水位线(默认为 4KB)。
              因此 (high_watermark - 4KB) / send_timeout 必须是一个合适的消息流出速度,否则挂起的进程将永远无法在超时前恢复。
              表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
              例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
              Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • send_timeout_close
              类型Boolean
              默认值true
              描述

              如果发送超时,则关闭连接。

            • recbuf
              类型Bytesize
              描述

              连接的 TCP 接收缓冲区(OS 内核)。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • sndbuf
              类型Bytesize
              描述

              连接的 TCP 发送缓冲区(OS 内核)。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • buffer
              类型Bytesize
              默认值"4KB"
              描述

              驱动程序使用的用户空间缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • high_watermark
              类型Bytesize
              默认值"1MB"
              描述

              当 EMQX 尝试发送的数据多于操作系统为套接字分配的发送缓冲区的空间时,剩余数据将被暂储在 Erlang 的内部缓冲区中,然后在后台发送。
              如果该内部缓冲区中排队的数据量超过了 high_watermark,对应的套接字就会被标记为繁忙。
              繁忙期间向此套接字发送数据的进程将被挂起,直到套接字解除繁忙或挂起时间超过 send_timeout
              套接字只有在内部缓冲区中的数据低于低水位线时才会解除繁忙。
              进程挂起期间,进程的消息队列可能发生堆积,详见 max_mailbox_len
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • nodelay
              类型Boolean
              默认值true
              描述

              连接的 TCP_NODELAY 标识

            • reuseaddr
              类型Boolean
              默认值true
              描述

              连接的 SO_REUSEADDR 标识。

            • keepalive
              类型String
              默认值none
              描述

              为 MQTT 连接在 TCP 或 SSL 上启用 TCP 保活。 值是以逗号分隔的三个数字,格式为 'Idle,Interval,Probes'

              • Idle: 在服务器开始发送保活探测之前,连接需要处于空闲状态的秒数(Linux 默认为 7200)。
              • Interval: TCP 保活探测间隔的秒数(Linux 默认值为 75)。
              • Probes: 在放弃并终止连接之前,从另一端未获得响应时要发送的 TCP 保活探测的最大数量(Linux 默认值为 9 次)。 例如 "240,30,5" 表示:在连接空闲 240 秒后发送 TCP 保活探测,每隔 30 秒发送一次,直到收到响应,如果连续丢失 5 个响应,连接应该被关闭。 默认值为 'none'
          • proxy_protocol
            类型Boolean
            默认值false
            描述

            如果为 EMQX 部署了反向代理,且在代理处启用了 PROXY 协议以传递客户端真实 IP 时,则需要一并开启此选项,以便 EMQX 从 PROXY 协议标头中提取客户端真实 IP。EMQX 将自动检测 PROXY 协议的版本,支持 V1 和 V2。
            PROXY 协议的详细说明,请参考:https://www.haproxy.com/blog/haproxy/proxy-protocol/

          • proxy_protocol_timeout
            类型Duration
            默认值"3s"
            描述

            接收 Proxy Protocol 报文头的超时时间。如果在超时内没有收到 Proxy Protocol 包,EMQX 将关闭 TCP 连接。
            表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
            例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
            Duration 等价于 Duration(ms)。单位部分不区分大小写。

          • enable
            类型Boolean
            默认值true
            描述

            是否启用该监听器。

          • bind
            类型String
            描述

            监听器绑定的 IP 地址或端口。

          • max_connections
            类型OneOf(Integer(1..+inf),String("infinity"))
            默认值1024
            描述

            监听器支持的最大连接数。

          • max_conn_rate
            类型Integer
            默认值1000
            描述

            监听器允许的最大连接速率。

          • enable_authn
            类型Boolean
            默认值true
            描述

            配置 true (默认值)启用客户端进行身份认证。 配置 false 时,将不对客户端做任何认证。

          • mountpoint
            类型String
            描述

            发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在 listeners.tcp.\<name>.mountpoint 设置为 some_tenant 的情况下订阅 t, 则客户端实际上订阅了 some_tenant/t 主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题 t 发送消息, 则该消息被路由到所有订阅了 some_tenant/t 的客户端,因此客户端 A 将收到该消息,带有 主题名称t。 设置为 "" 以禁用该功能。 挂载点字符串中可用的变量:

            • ${clientid}:clientid
            • ${username}:用户名
          • access_rules
            类型Array(String)
            默认值[]
            描述

            由字符串规则组成的访问规则列表,以限制或允许某些地址的访问。规则之间存在前后顺序。规则的格式为 allow | deny <address> | <CIDR> | all
            例如:
            ["deny 192.168.1.1", "allow 192.168.1.0/24", "deny, all"]

        • ssl
          类型Map($name->Struct(ssl_listener))
          描述

          从监听器名称到配置参数的映射。

          ssl_listener

          • acceptors
            类型Integer
            默认值16
            描述

            Acceptor 进程池大小。

          • tcp_options
            类型Struct(tcp_opts)
            描述

            TCP Socket 配置。

            tcp_opts

            • active_n
              类型Integer(0..+inf)
              默认值100
              描述

              为此套接字指定{active,N}选项
              See: https://erlang.org/doc/man/inet.html#setopts-2

            • backlog
              类型Integer(1..+inf)
              默认值1024
              描述

              TCP backlog 定义了挂起连接队列可以增长到的最大长度。

            • send_timeout
              类型Duration
              默认值"15s"
              描述

              进程因向繁忙的套接字发送数据而挂起的最长时间,超时后将关闭此 TCP 连接与进程。
              进程解除挂起需要套接字解除繁忙状态,即堆积在 Erlang 内部缓冲区中的数据从高位水线(由 high_watermark 指定)降至低水位线(默认为 4KB)。
              因此 (high_watermark - 4KB) / send_timeout 必须是一个合适的消息流出速度,否则挂起的进程将永远无法在超时前恢复。
              表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
              例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
              Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • send_timeout_close
              类型Boolean
              默认值true
              描述

              如果发送超时,则关闭连接。

            • recbuf
              类型Bytesize
              描述

              连接的 TCP 接收缓冲区(OS 内核)。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • sndbuf
              类型Bytesize
              描述

              连接的 TCP 发送缓冲区(OS 内核)。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • buffer
              类型Bytesize
              默认值"4KB"
              描述

              驱动程序使用的用户空间缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • high_watermark
              类型Bytesize
              默认值"1MB"
              描述

              当 EMQX 尝试发送的数据多于操作系统为套接字分配的发送缓冲区的空间时,剩余数据将被暂储在 Erlang 的内部缓冲区中,然后在后台发送。
              如果该内部缓冲区中排队的数据量超过了 high_watermark,对应的套接字就会被标记为繁忙。
              繁忙期间向此套接字发送数据的进程将被挂起,直到套接字解除繁忙或挂起时间超过 send_timeout
              套接字只有在内部缓冲区中的数据低于低水位线时才会解除繁忙。
              进程挂起期间,进程的消息队列可能发生堆积,详见 max_mailbox_len
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

            • nodelay
              类型Boolean
              默认值true
              描述

              连接的 TCP_NODELAY 标识

            • reuseaddr
              类型Boolean
              默认值true
              描述

              连接的 SO_REUSEADDR 标识。

            • keepalive
              类型String
              默认值none
              描述

              为 MQTT 连接在 TCP 或 SSL 上启用 TCP 保活。 值是以逗号分隔的三个数字,格式为 'Idle,Interval,Probes'

              • Idle: 在服务器开始发送保活探测之前,连接需要处于空闲状态的秒数(Linux 默认为 7200)。
              • Interval: TCP 保活探测间隔的秒数(Linux 默认值为 75)。
              • Probes: 在放弃并终止连接之前,从另一端未获得响应时要发送的 TCP 保活探测的最大数量(Linux 默认值为 9 次)。 例如 "240,30,5" 表示:在连接空闲 240 秒后发送 TCP 保活探测,每隔 30 秒发送一次,直到收到响应,如果连续丢失 5 个响应,连接应该被关闭。 默认值为 'none'
          • proxy_protocol
            类型Boolean
            默认值false
            描述

            如果为 EMQX 部署了反向代理,且在代理处启用了 PROXY 协议以传递客户端真实 IP 时,则需要一并开启此选项,以便 EMQX 从 PROXY 协议标头中提取客户端真实 IP。EMQX 将自动检测 PROXY 协议的版本,支持 V1 和 V2。
            PROXY 协议的详细说明,请参考:https://www.haproxy.com/blog/haproxy/proxy-protocol/

          • proxy_protocol_timeout
            类型Duration
            默认值"3s"
            描述

            接收 Proxy Protocol 报文头的超时时间。如果在超时内没有收到 Proxy Protocol 包,EMQX 将关闭 TCP 连接。
            表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
            例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
            Duration 等价于 Duration(ms)。单位部分不区分大小写。

          • enable
            类型Boolean
            默认值true
            描述

            是否启用该监听器。

          • bind
            类型String
            描述

            监听器绑定的 IP 地址或端口。

          • max_connections
            类型OneOf(Integer(1..+inf),String("infinity"))
            默认值1024
            描述

            监听器支持的最大连接数。

          • max_conn_rate
            类型Integer
            默认值1000
            描述

            监听器允许的最大连接速率。

          • enable_authn
            类型Boolean
            默认值true
            描述

            配置 true (默认值)启用客户端进行身份认证。 配置 false 时,将不对客户端做任何认证。

          • mountpoint
            类型String
            描述

            发布或订阅时,在所有主题前增加前缀字符串。 当消息投递给订阅者时,前缀字符串将从主题名称中删除。挂载点是用户可以用来实现不同监听器之间的消息路由隔离的一种方式。 例如,如果客户端 A 在 listeners.tcp.\<name>.mountpoint 设置为 some_tenant 的情况下订阅 t, 则客户端实际上订阅了 some_tenant/t 主题。 类似地,如果另一个客户端 B(连接到与客户端 A 相同的侦听器)向主题 t 发送消息, 则该消息被路由到所有订阅了 some_tenant/t 的客户端,因此客户端 A 将收到该消息,带有 主题名称t。 设置为 "" 以禁用该功能。 挂载点字符串中可用的变量:

            • ${clientid}:clientid
            • ${username}:用户名
          • access_rules
            类型Array(String)
            默认值[]
            描述

            由字符串规则组成的访问规则列表,以限制或允许某些地址的访问。规则之间存在前后顺序。规则的格式为 allow | deny <address> | <CIDR> | all
            例如:
            ["deny 192.168.1.1", "allow 192.168.1.0/24", "deny, all"]

          • ssl_options
            类型Struct(listener_ssl_opts)
            描述

            SSL Socket 配置。

            listener_ssl_opts

            • cacertfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/cacert.pem"
              描述

              受信任的 PEM 格式 CA 证书捆绑文件
              此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
              注意:从文件中失效(删除)证书不会影响已建立的连接。

            • cacerts
              类型Boolean
              描述

              Deprecated since 5.1.4.

            • certfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/cert.pem"
              描述

              PEM 格式证书链文件
              此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

            • keyfile
              类型String
              默认值"${EMQX_ETC_DIR}/certs/key.pem"
              描述

              PEM 格式的私钥文件。

            • verify
              类型Enum(verify_peer,verify_none)
              默认值verify_none
              描述

              启用或禁用对等验证。

            • reuse_sessions
              类型Boolean
              默认值true
              描述

              启用 TLS 会话重用。

            • depth
              类型Integer(0..+inf)
              默认值10
              描述

              在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
              如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
              如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

            • password
              类型String
              描述

              包含用户密码的字符串。仅在私钥文件受密码保护时使用。

            • versions
              类型Array(String)
              默认值["tlsv1.3", "tlsv1.2"]
              描述

              支持所有 TLS/DTLS 版本
              注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

            • ciphers
              类型Array(String)
              默认值[]
              描述

              此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
              密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

              名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
              注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

              例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


              注:PSK 的 Ciphers 不支持 tlsv1.3
              如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
              PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
            • secure_renegotiate
              类型Boolean
              默认值true
              描述

              指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
              如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
              当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

            • log_level
              类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
              默认值notice
              描述

              允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

            • hibernate_after
              类型Duration
              默认值"5s"
              描述

              指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
              表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
              例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
              Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • dhfile
              类型String
              描述

              如果协商使用 Diffie-Hellman 密钥交换的密码套件,则服务器将使用包含 PEM 编码的 Diffie-Hellman 参数的文件的路径。如果未指定,则使用默认参数。
              注意:TLS 1.3 不支持dhfile选项。

            • fail_if_no_peer_cert
              类型Boolean
              默认值false
              描述

              此选项仅在 verify 设置为 verify_peer 时有效。 如果设置为 true,那么 EMQX 将在客户端未能提供证书时拒绝该连接。 如果设置为 false,则 EMQX 将接受未提供证书的客户端。

            • honor_cipher_order
              类型Boolean
              默认值true
              描述

              一个重要的安全设置如果启用此设置,服务器将从客户端支持的密码套件列表中优先选择它最偏好的密码套件(由 ciphers 指定,偏好程度从左至右依次降低),从而忽略客户端的首选项。使用服务器的首选项通常更好,因为更有可能正确配置服务器。

            • client_renegotiation
              类型Boolean
              默认值true
              描述

              在支持客户机发起的重新协商的协议中,这种操作的资源成本对于服务器来说高于客户机。 这可能会成为拒绝服务攻击的载体。 SSL 应用程序已经采取措施来反击此类尝试,但通过将此选项设置为 false,可以严格禁用客户端发起的重新协商。 默认值为 true。请注意,由于基础密码套件可以加密的消息数量有限,禁用重新协商可能会导致长期连接变得不可用。

            • handshake_timeout
              类型Duration
              默认值"15s"
              描述

              握手完成所允许的最长时间
              表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
              例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
              Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • gc_after_handshake
              类型Boolean
              默认值false
              描述

              内存使用调优。如果启用,将在 TLS/SSL 握手完成后立即执行垃圾回收。TLS/SSL 握手建立后立即进行 GC。

            • ocsp
              类型Struct(ocsp)

              ocsp

              • enable_ocsp_stapling
                类型Boolean
                默认值false
                描述

                是否为监听器启用 OCSP Stapling 功能。 如果设置为 true,需要定义 OCSP Responder 的 URL 和证书签发者的 PEM 文件路径。

              • responder_url
                类型String
                描述

                用于检查服务器证书的 OCSP Responder 的 URL。

              • issuer_pem
                类型String
                描述

                服务器证书的 OCSP 签发者的 PEM 编码证书。

              • refresh_interval
                类型Duration
                默认值"5m"
                描述

                为服务器刷新 OCSP 响应的周期。
                表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
                例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
                Duration 等价于 Duration(ms)。单位部分不区分大小写。

              • refresh_http_timeout
                类型Duration
                默认值"15s"
                描述

                检查 OCSP 响应时,HTTP 请求的超时。
                表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
                例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
                Duration 等价于 Duration(ms)。单位部分不区分大小写。

            • enable_crl_check
              类型Boolean
              默认值false
              描述

              是否为该监听器启用 CRL 检查。

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该网关

      • enable_stats

        类型Boolean
        默认值true
        描述

        是否开启客户端统计

      • idle_timeout

        类型Duration
        默认值"30s"
        描述

        客户端连接过程的空闲时间。该配置用于:

        1. 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
        2. 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。
      • clientinfo_override

        类型Struct(clientinfo_override)
        描述

        ClientInfo 重写。

        clientinfo_override

        • username
          类型String
          描述

          username 重写模板

        • password
          类型String
          描述

          password 重写模板

        • clientid
          类型String
          描述

          clientid 重写模板

  • prometheus

    类型OneOf(Struct(recommend_setting),Struct(legacy_deprecated_setting))
    默认值{}

    recommend_setting

    • enable_basic_auth

      类型Boolean
      默认值false
      描述

      启用或禁用 Prometheus 抓取 API 的基本认证,不适用于 Push Gateway。

    • push_gateway

      类型Struct(push_gateway)
      描述

      Push Gateway 是可选的,如果 Prometheus 要抓取 EMQX,则不应配置。

      push_gateway

      • enable

        类型Boolean
        默认值false
        描述

        启用或禁用 Pushgateway。

      • url

        类型String
        默认值"http://127.0.0.1:9091"
        描述

        Pushgateway 服务器的 URL。Push Gateway 是可选的,如果 Prometheus 要抓取 EMQX,则不应配置。

      • interval

        类型Duration
        默认值"15s"
        描述

        数据推送间隔
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • headers

        类型Map
        默认值{}
        描述

        推送到 Push Gateway 的 HTTP Headers 列表。
        例如, { Authorization = "some-authz-tokens"}

      • job_name

        类型String
        默认值"${name}/instance/${name}~${host}"
        描述

        推送到 Push Gateway 的 Job 名称。可用变量为:

        • ${name}: EMQX 节点的名称。
        • ${host}: EMQX 节点主机名。 例如,当 EMQX 节点名为 emqx@127.0.0.1 则 name 变量的值为 emqx,host 变量的值为 127.0.0.1
          默认值为: ${name}/instance/${name}~${host}
    • collectors

      类型Struct(collectors)
      描述

      虚拟机的内部高级指标最初是禁用的 通常只在性能测试期间启用。 启用它们将增加 CPU 负载。

      collectors

      • vm_dist

        类型Enum(disabled,enabled)
        默认值disabled
        描述

        开启或关闭 VM 分布采集器,收集 Erlang 分布机制中涉及的套接字和进程的信息。

      • mnesia

        类型Enum(enabled,disabled)
        默认值disabled
        描述

        开启或关闭 Mnesia 采集器, 使用 mnesia:system_info/1 收集 Mnesia 相关指标

      • vm_statistics

        类型Enum(enabled,disabled)
        默认值disabled
        描述

        开启或关闭 VM 统计采集器, 使用 erlang:statistics/1 收集 Erlang VM 相关指标

      • vm_system_info

        类型Enum(enabled,disabled)
        默认值disabled
        描述

        开启或关闭 VM 系统信息采集器, 使用 erlang:system_info/1 收集 Erlang VM 相关指标

      • vm_memory

        类型Enum(enabled,disabled)
        默认值disabled
        描述

        开启或关闭 VM 内存采集器, 使用 erlang:memory/0 收集 Erlang 虚拟机动态分配的内存信息,同时提供基本的 (D)ETS 统计信息

      • vm_msacc

        类型Enum(enabled,disabled)
        默认值disabled
        描述

        开启或关闭 VM msacc 采集器, 使用 erlang:statistics(microstate_accounting) 收集微状态计数指标

    legacy_deprecated_setting

    • push_gateway_server

      类型String
      默认值"http://127.0.0.1:9091"
      描述

      自5.4.0版本起弃用,改用 prometheus.push_gateway.url

    • interval

      类型Duration
      默认值"15s"
      描述

      自5.4.0版本起弃用,改用 prometheus.push_gateway.interval
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • headers

      类型Map
      默认值{}
      描述

      自5.4.0版本起弃用,改用 prometheus.push_gateway.headers

    • job_name

      类型String
      默认值"${name}/instance/${name}~${host}"
      描述

      自5.4.0版本起弃用,改用 prometheus.push_gateway.job_name

    • enable

      类型Boolean
      默认值false
      描述

      自5.4.0版本起弃用,改用 prometheus.push_gateway.url

    • vm_dist_collector

      类型Enum(disabled,enabled)
      默认值disabled
      描述

      自5.4.0版本起弃用,改用 prometheus.collectors.vm_dist

    • mnesia_collector

      类型Enum(enabled,disabled)
      默认值disabled
      描述

      自5.4.0版本起弃用,改用 prometheus.collectors.mnesia

    • vm_statistics_collector

      类型Enum(enabled,disabled)
      默认值disabled
      描述

      自5.4.0版本起弃用,改用 prometheus.collectors.vm_statistics

    • vm_system_info_collector

      类型Enum(enabled,disabled)
      默认值disabled
      描述

      自5.4.0版本起弃用,改用 prometheus.collectors.vm_system_info

    • vm_memory_collector

      类型Enum(enabled,disabled)
      默认值disabled
      描述

      自5.4.0版本起弃用,改用 prometheus.collectors.vm_memory

    • vm_msacc_collector

      类型Enum(enabled,disabled)
      默认值disabled
      描述

      自5.4.0版本起弃用,改用 prometheus.collectors.vm_msacc

  • exhook

    类型Struct(exhook)

    exhook

    • servers

      类型Array(Struct(server))
      默认值[]
      描述

      ExHook 服务器列表

      server

      • name

        类型String
        描述

        ExHook 服务器名称

      • enable

        类型Boolean
        默认值true
        描述

        开启这个 Exhook 服务器

      • url

        类型String
        描述

        gRPC 服务器地址

      • request_timeout

        类型Duration
        默认值"5s"
        描述

        gRPC 服务器请求超时
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • failed_action

        类型Enum(deny,ignore)
        默认值deny
        描述

        当 gRPC 请求失败后的操作

      • ssl

        类型Struct(ssl_conf)

        ssl_conf

        • cacertfile
          类型String
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

        • server_name_indication
          类型OneOf(String("disable"),String)
          描述

          指定要在 TLS 服务器名称指示扩展中使用的主机名。
          例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
          如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
          然后,主机名也用于对等机的主机名验证证书
          特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

      • socket_options

        类型Struct(socket_options)
        默认值{keepalive = true, nodelay = true}

        socket_options

        • keepalive
          类型Boolean
          默认值true
          描述

          当没有其他数据交换时,是否向连接的对端套接字定期的发送探测包。如果另一端没有响应,则认为连接断开,并向控制进程发送错误消息。

        • nodelay
          类型Boolean
          默认值true
          描述

          如果为 true,则为套接字设置 TCP_NODELAY 选项,这意味着会立即发送数据包

        • recbuf
          类型Bytesize
          描述

          套接字的最小接收缓冲区大小
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

        • sndbuf
          类型Bytesize
          描述

          套接字的最小发送缓冲区大小
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位采用二进制标准,即 1MB 等于 1024KB。单位部分不区分大小写,即 1kb 等同于 1KB。

      • auto_reconnect

        类型OneOf(String("false"),Duration)
        默认值"60s"
        描述

        自动重连到 gRPC 服务器的设置。 当 gRPC 服务器不可用时,Exhook 将会按照这里设置的间隔时间进行重连,并重新初始化注册的钩子

      • pool_size

        类型Integer(1..+inf)
        默认值8
        描述

        gRPC 客户端进程池大小

  • psk_authentication

    类型Struct(psk_authentication)

    psk_authentication

    • enable

      类型Boolean
      默认值false
      描述

      是否开启 TLS PSK 支持

    • init_file

      类型String
      描述

      如果设置了初始化文件,EMQX 将在启动时从初始化文件中导入 PSK 信息到内建数据库中。 这个文件需要按行进行组织,每一行必须遵守如下格式: PSKIdentity:SharedSecret 例如: mydevice1:c2VjcmV0

    • separator

      类型String
      默认值":"
      描述

      PSK 文件中 PSKIdentitySharedSecret 之间的分隔符

    • chunk_size

      类型Integer
      默认值50
      描述

      将 PSK 文件导入到内建数据时每个块的大小

  • slow_subs

    类型Struct(slow_subs)

    slow_subs

    • enable

      类型Boolean
      默认值false
      描述

      是否启用慢订阅

    • threshold

      类型Duration
      默认值"500ms"
      描述

      消息时延大于此阈值的消费端 Client ID 与主题将被记录到慢订阅列表中。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • expire_interval

      类型Duration
      默认值"300s"
      描述

      慢订阅记录的过期时间,如果记录在过期时间内没有更新,那么该记录将被删除。
      表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
      例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
      Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • top_k_num

      类型Integer(1..+inf)
      默认值10
      描述

      慢订阅记录的最大数量,最大不能超过 1000。

    • stats_type

      类型Enum(whole,internal,response)
      默认值whole
      描述

      消息时延的计算方式:
      - whole:从消息到达 EMQX(EMQX 从接收缓冲区取得消息)开始,到消息完成传输的时间。
      - internal:从消息到达 EMQX(EMQX 从接收缓冲区取得消息)开始,到消息开始投递(EMQX 尝试向发送缓冲区写入消息)的时间。
      - response:从消息开始投递开始,到消息完成传输的时间。
      注:消息完成传输时间指的是 QoS 1、2 消息完成 MQTT 报文响应流程时间,即 QoS 1 消息收到 PUBACK 报文,QoS 2 消息收到 PUBCOMP 报文的时间。QoS 0 消息由于无响应报文,所以 QoS 0 消息的完成传输时间均以消息开始投递时间代替。因此使用 response 方式统计时延时,QoS 0 消息的时延将永远等于 0。

  • opentelemetry

    类型Struct(opentelemetry)

    opentelemetry

    • metrics

      类型Struct(otel_metrics)
      描述

      Open Telemetry 指标配置。

      otel_metrics

      • enable

        类型Boolean
        默认值false
        描述

        启用或禁用 open telemetry 指标

      • interval

        别名scheduled_delay
        类型Duration
        默认值"10s"
        描述

        两次连续导出 Open Telemetry 信号之间的延迟间隔。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • logs

      类型Struct(otel_logs)
      描述

      Open Telemetry 日志配置。如果启用,EMQX 将安装一个日志处理器,根据 Open Telemetry 日志数据模型格式化事件,并将它们导出到配置的 Open Telemetry 收集器或后端。

      otel_logs

      • level

        类型Enum(debug,info,notice,warning,error,critical,alert,emergency,all)
        默认值warning
        描述

        Open Telemetry 日志处理器的日志级别。

      • enable

        类型Boolean
        默认值false
        描述

        启用或禁用 open telemetry 指标

      • scheduled_delay

        类型Duration
        默认值"1s"
        描述

        两次连续导出 Open Telemetry 信号之间的延迟间隔。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

    • traces

      类型Struct(otel_traces)
      描述

      Open Telemetry 追踪配置。

      otel_traces

      • enable

        类型Boolean
        默认值false
        描述

        启用或禁用 open telemetry 指标

      • scheduled_delay

        类型Duration
        默认值"5s"
        描述

        两次连续导出 Open Telemetry 信号之间的延迟间隔。
        表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
        例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
        Duration 等价于 Duration(ms)。单位部分不区分大小写。

      • filter

        类型Struct(trace_filter)
        描述

        Open Telemetry 追踪过滤器配置

        trace_filter

        • trace_all
          类型Boolean
          默认值false
          描述

          如果启用,将追踪所有发布的消息,如果无法从消息中提取追踪 ID,则生成新的追踪 ID。 否则,只追踪带有追踪上下文的消息。默认禁用。

    • exporter

      类型Struct(otel_exporter)
      描述

      Open Telemetry 导出器

      otel_exporter

      • endpoint

        类型String
        默认值"http://localhost:4317"
        描述

        导出器将要发送 Open Telemetry 信号数据的目标 URL。

      • ssl_options

        类型Struct(ssl_client_opts)
        默认值{enable = false}
        描述

        Open Telemetry 导出器的 SSL 配置

        ssl_client_opts

        • cacertfile
          类型String
          描述

          受信任的 PEM 格式 CA 证书捆绑文件
          此文件中的证书用于验证 TLS 对等方的证书。 如果要信任新 CA,请将新证书附加到文件中。 无需重启 EMQX 即可加载更新的文件,因为系统会定期检查文件是否已更新(并重新加载)
          注意:从文件中失效(删除)证书不会影响已建立的连接。

        • cacerts
          类型Boolean
          描述

          Deprecated since 5.1.4.

        • certfile
          类型String
          描述

          PEM 格式证书链文件
          此文件中的证书应与证书颁发链的顺序相反。也就是说,主机的证书应该放在文件的开头, 然后是直接颁发者 CA 证书,依此类推,一直到根 CA 证书。 根 CA 证书是可选的,如果想要添加,应加到文件到最末端。

        • keyfile
          类型String
          描述

          PEM 格式的私钥文件。

        • verify
          类型Enum(verify_peer,verify_none)
          默认值verify_none
          描述

          启用或禁用对等验证。

        • reuse_sessions
          类型Boolean
          默认值true
          描述

          启用 TLS 会话重用。

        • depth
          类型Integer(0..+inf)
          默认值10
          描述

          在有效的证书路径中,可以跟随对等证书的非自颁发中间证书的最大数量。 因此,如果深度为 0,则对等方必须由受信任的根 CA 直接签名;
          如果是 1,路径可以是 PEER、中间 CA、ROOT-CA;
          如果是 2,则路径可以是 PEER、中间 CA1、中间 CA2、ROOT-CA。

        • password
          类型String
          描述

          包含用户密码的字符串。仅在私钥文件受密码保护时使用。

        • versions
          类型Array(String)
          默认值["tlsv1.3", "tlsv1.2"]
          描述

          支持所有 TLS/DTLS 版本
          注:PSK 的 Ciphers 无法在 tlsv1.3 中使用,如果打算使用 PSK 密码套件,请确保这里配置为 ["tlsv1.2","tlsv1.1"]

        • ciphers
          类型Array(String)
          默认值[]
          描述

          此配置保存由逗号分隔的 TLS 密码套件名称,或作为字符串数组。例如 "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256"["TLS_AES_256_GCM_SHA384","TLS_AES_128_GCM_SHA256"]
          密码(及其顺序)定义了客户端和服务器通过网络连接加密信息的方式。 选择一个好的密码套件对于应用程序的数据安全性、机密性和性能至关重要。

          名称应为 OpenSSL 字符串格式(而不是 RFC 格式)。 EMQX 配置文档提供的所有默认值和示例都是 OpenSSL 格式
          注意:某些密码套件仅与特定的 TLS 版本兼容('tlsv1.1'、'tlsv1.2'或'tlsv1.3')。 不兼容的密码套件将被自动删除。

          例如,如果只有 versions 仅配置为 tlsv1.3。为其他版本配置密码套件将无效。


          注:PSK 的 Ciphers 不支持 tlsv1.3
          如果打算使用 PSK 密码套件, tlsv1.3 应在ssl.versions中禁用。
          PSK 密码套件: "RSA-PSK-AES256-GCM-SHA384,RSA-PSK-AES256-CBC-SHA384, RSA-PSK-AES128-GCM-SHA256,RSA-PSK-AES128-CBC-SHA256, RSA-PSK-AES256-CBC-SHA,RSA-PSK-AES128-CBC-SHA, RSA-PSK-DES-CBC3-SHA,RSA-PSK-RC4-SHA"
        • secure_renegotiate
          类型Boolean
          默认值true
          描述

          指定是否拒绝不符合 RFC 5746 的 TLS 重新协商尝试。默认情况下,secure_renegotiate 被设置为 true,即强制执行安全重新协商。
          如果设置为 false,则仍然会使用安全重协商,但如果对端不支持 RFC 5746,则会退回到不安全重协商,这将增加遭受 MITM 攻击的风险。
          当 TLS 版本配置(或协商)为 1.3 时此选项将不会生效。

        • log_level
          类型Enum(emergency,alert,critical,error,warning,notice,info,debug,none,all)
          默认值notice
          描述

          允许 SSL 输出的最低日志等级。默认值是 'notice',设置为更低的 'debug' 等级可以获取更详细的日志记录,可用于调查 SSL 握手问题。

        • hibernate_after
          类型Duration
          默认值"5s"
          描述

          指定 SSL 进程在闲置多少时间后休眠,从而减少其内存占用。休眠的进程将在新消息到达时被唤醒。由于休眠和唤醒都会对该进程执行垃圾回收,因此过于频繁的休眠和唤醒将导致 CPU 占用上升。
          表示时间长度的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。每个配置项都有自己的最小精度,设定值中超出精度的部分将被忽略。
          例如将一个类型为 Duration(s) 的配置项设置为 1200ms,最终生效的时间长度将是 1s 而不是 1.2s
          Duration 等价于 Duration(ms)。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

        • server_name_indication
          类型OneOf(String("disable"),String)
          描述

          指定要在 TLS 服务器名称指示扩展中使用的主机名。
          例如,当连接到 "server.example.net" 时,接受连接并执行 TLS 握手的真正服务器可能与 TLS 客户端最初连接到的主机不同, 例如,当连接到 IP 地址时,或者当主机具有多个可解析的 DNS 记录时
          如果未指定,它将默认为使用的主机名字符串 建立连接,除非使用 IP 地址
          然后,主机名也用于对等机的主机名验证证书
          特殊值 disable 阻止发送服务器名称指示扩展,并禁用主机名验证检查。

  • api_key

    类型Struct(api_key)

    api_key

    • bootstrap_file

      类型String
      默认值""
      描述

      用于在启动 EMQX 时,添加 API 密钥,其格式为 {appid}:{secret},多个密钥用换行分隔。: 7e729ae70d23144b:2QILI9AcQ9BYlVqLDHQNWN2saIjBV4egr1CZneTNKr9CpK ec3907f865805db0:Ee3taYltUKtoBVD9C3XjQl9C6NXheip8Z9B69BpUv5JxVHL