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
      • enable_authn

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

        配置 true (默认值)启用客户端进行身份认证,通过检查认配置的认认证器链来决定是否允许接入。 配置 false 时,将不对客户端做任何认证,任何客户端,不论是不是携带用户名等认证信息,都可以接入。 配置 quick_deny_anonymous 时,行为跟 true 类似,但是会对匿名 客户直接拒绝,不做使用任何认证器对客户端进行身份检查。

      • max_conn_rate

        类型String
        描述

        最大连接速率。
        这用于限制该节点的连接速率。 一旦达到限制,新的连接将被推迟或拒绝。
        例如:

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

        类型String
        描述

        消息发布速率。
        这用于限制该节点的入站消息数量。 一旦达到限制,受限制的客户端将减速甚至暂时挂起。
        例如:

        • 500/s:每秒只发送前500条消息,其他消息被缓冲。
        • 500/10s:即使是10秒,也只发送前500条消息,其他消息被缓冲。
      • bytes_rate

        类型String
        描述

        数据发布速率。
        这用于限制该节点的入站字节速率。 一旦达到限制,受限制的客户端将减速甚至暂时挂起。
        字节的单位可以是:KB MB GB。
        例如:

        • 500KB/s:每秒只发送前500千字节,其他消息被缓冲。
        • 500MB/10s:即使是10秒,也只发送前500兆字节,其他消息被缓冲。
      • access_rules

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

        此监听器的访问控制规则。

      • proxy_protocol

        类型Boolean
        默认值false
        描述

        如果 EMQX 集群部署在 HAProxy 或 Nginx 之后,请启用代理协议 V1/2
        详情见: https://www.haproxy.com/blog/haproxy/proxy-protocol/

      • proxy_protocol_timeout

        类型Duration
        默认值3s
        描述

        代理协议超时。如果在超时时间内未收到代理协议数据包,EMQX 将关闭 TCP 连接。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • tcp_options

        类型Struct(tcp_opts)

        tcp_opts

        • active_n
          类型Integer
          默认值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 发送超时。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • send_timeout_close
          类型Boolean
          默认值true
          描述

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

        • recbuf
          类型Bytesize
          描述

          连接的 TCP 接收缓冲区(OS 内核)。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

        • sndbuf
          类型Bytesize
          描述

          连接的 TCP 发送缓冲区(OS 内核)。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

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

          驱动程序使用的用户空间缓冲区的大小。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

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

          当 VM 套接字实现内部排队的数据量达到此限制时,套接字将设置为忙碌状态。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

        • 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
      • enable_authn

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

        配置 true (默认值)启用客户端进行身份认证,通过检查认配置的认认证器链来决定是否允许接入。 配置 false 时,将不对客户端做任何认证,任何客户端,不论是不是携带用户名等认证信息,都可以接入。 配置 quick_deny_anonymous 时,行为跟 true 类似,但是会对匿名 客户直接拒绝,不做使用任何认证器对客户端进行身份检查。

      • max_conn_rate

        类型String
        描述

        最大连接速率。
        这用于限制该节点的连接速率。 一旦达到限制,新的连接将被推迟或拒绝。
        例如:

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

        类型String
        描述

        消息发布速率。
        这用于限制该节点的入站消息数量。 一旦达到限制,受限制的客户端将减速甚至暂时挂起。
        例如:

        • 500/s:每秒只发送前500条消息,其他消息被缓冲。
        • 500/10s:即使是10秒,也只发送前500条消息,其他消息被缓冲。
      • bytes_rate

        类型String
        描述

        数据发布速率。
        这用于限制该节点的入站字节速率。 一旦达到限制,受限制的客户端将减速甚至暂时挂起。
        字节的单位可以是:KB MB GB。
        例如:

        • 500KB/s:每秒只发送前500千字节,其他消息被缓冲。
        • 500MB/10s:即使是10秒,也只发送前500兆字节,其他消息被缓冲。
      • access_rules

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

        此监听器的访问控制规则。

      • proxy_protocol

        类型Boolean
        默认值false
        描述

        如果 EMQX 集群部署在 HAProxy 或 Nginx 之后,请启用代理协议 V1/2
        详情见: https://www.haproxy.com/blog/haproxy/proxy-protocol/

      • proxy_protocol_timeout

        类型Duration
        默认值3s
        描述

        代理协议超时。如果在超时时间内未收到代理协议数据包,EMQX 将关闭 TCP 连接。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • tcp_options

        类型Struct(tcp_opts)

        tcp_opts

        • active_n
          类型Integer
          默认值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 发送超时。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • send_timeout_close
          类型Boolean
          默认值true
          描述

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

        • recbuf
          类型Bytesize
          描述

          连接的 TCP 接收缓冲区(OS 内核)。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

        • sndbuf
          类型Bytesize
          描述

          连接的 TCP 发送缓冲区(OS 内核)。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

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

          驱动程序使用的用户空间缓冲区的大小。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

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

          当 VM 套接字实现内部排队的数据量达到此限制时,套接字将设置为忙碌状态。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

        • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • dhfile
          类型String
          描述

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

        • fail_if_no_peer_cert
          类型Boolean
          默认值false
          描述

          TLS/DTLS 服务器与 {verify,verify_peer} 一起使用。 如果设置为 true,则如果客户端没有要发送的证书,即发送空证书,服务器将失败。 如果设置为 false,则仅当客户端发送无效证书(空证书被视为有效证书)时才会失败。

        • honor_cipher_order
          类型Boolean
          默认值true
          描述

          一个重要的安全设置,它强制根据服务器指定的顺序而不是客户机指定的顺序设置密码,从而强制服务器管理员执行(通常配置得更正确)安全顺序。

        • client_renegotiation
          类型Boolean
          默认值true
          描述

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

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

          握手完成所允许的最长时间
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

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

            检查 OCSP 响应时,HTTP 请求的超时。
            表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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
      • enable_authn

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

        配置 true (默认值)启用客户端进行身份认证,通过检查认配置的认认证器链来决定是否允许接入。 配置 false 时,将不对客户端做任何认证,任何客户端,不论是不是携带用户名等认证信息,都可以接入。 配置 quick_deny_anonymous 时,行为跟 true 类似,但是会对匿名 客户直接拒绝,不做使用任何认证器对客户端进行身份检查。

      • max_conn_rate

        类型String
        描述

        最大连接速率。
        这用于限制该节点的连接速率。 一旦达到限制,新的连接将被推迟或拒绝。
        例如:

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

        类型String
        描述

        消息发布速率。
        这用于限制该节点的入站消息数量。 一旦达到限制,受限制的客户端将减速甚至暂时挂起。
        例如:

        • 500/s:每秒只发送前500条消息,其他消息被缓冲。
        • 500/10s:即使是10秒,也只发送前500条消息,其他消息被缓冲。
      • bytes_rate

        类型String
        描述

        数据发布速率。
        这用于限制该节点的入站字节速率。 一旦达到限制,受限制的客户端将减速甚至暂时挂起。
        字节的单位可以是:KB MB GB。
        例如:

        • 500KB/s:每秒只发送前500千字节,其他消息被缓冲。
        • 500MB/10s:即使是10秒,也只发送前500兆字节,其他消息被缓冲。
      • access_rules

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

        此监听器的访问控制规则。

      • proxy_protocol

        类型Boolean
        默认值false
        描述

        如果 EMQX 集群部署在 HAProxy 或 Nginx 之后,请启用代理协议 V1/2
        详情见: https://www.haproxy.com/blog/haproxy/proxy-protocol/

      • proxy_protocol_timeout

        类型Duration
        默认值3s
        描述

        代理协议超时。如果在超时时间内未收到代理协议数据包,EMQX 将关闭 TCP 连接。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • tcp_options

        类型Struct(tcp_opts)

        tcp_opts

        • active_n
          类型Integer
          默认值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 发送超时。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • send_timeout_close
          类型Boolean
          默认值true
          描述

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

        • recbuf
          类型Bytesize
          描述

          连接的 TCP 接收缓冲区(OS 内核)。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

        • sndbuf
          类型Bytesize
          描述

          连接的 TCP 发送缓冲区(OS 内核)。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

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

          驱动程序使用的用户空间缓冲区的大小。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

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

          当 VM 套接字实现内部排队的数据量达到此限制时,套接字将设置为忙碌状态。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

        • 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"
          描述

          WebSocket 的 MQTT 协议路径。因此,EMQX Broker 的 WebSocket 地址为: ws://{ip}:{port}/mqtt

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

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

        • compress
          类型Boolean
          默认值false
          描述

          如果 true,则使用 zlib 压缩 WebSocket 消息
          deflate_opts 下的配置项属于压缩相关参数配置。

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

          关闭在此间隔内未发送 MQTT CONNECT 消息的客户端的传输层连接。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • max_frame_size
          类型OneOf(String("infinity"),Integer)
          默认值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
            描述

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

    • 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
      • enable_authn

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

        配置 true (默认值)启用客户端进行身份认证,通过检查认配置的认认证器链来决定是否允许接入。 配置 false 时,将不对客户端做任何认证,任何客户端,不论是不是携带用户名等认证信息,都可以接入。 配置 quick_deny_anonymous 时,行为跟 true 类似,但是会对匿名 客户直接拒绝,不做使用任何认证器对客户端进行身份检查。

      • max_conn_rate

        类型String
        描述

        最大连接速率。
        这用于限制该节点的连接速率。 一旦达到限制,新的连接将被推迟或拒绝。
        例如:

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

        类型String
        描述

        消息发布速率。
        这用于限制该节点的入站消息数量。 一旦达到限制,受限制的客户端将减速甚至暂时挂起。
        例如:

        • 500/s:每秒只发送前500条消息,其他消息被缓冲。
        • 500/10s:即使是10秒,也只发送前500条消息,其他消息被缓冲。
      • bytes_rate

        类型String
        描述

        数据发布速率。
        这用于限制该节点的入站字节速率。 一旦达到限制,受限制的客户端将减速甚至暂时挂起。
        字节的单位可以是:KB MB GB。
        例如:

        • 500KB/s:每秒只发送前500千字节,其他消息被缓冲。
        • 500MB/10s:即使是10秒,也只发送前500兆字节,其他消息被缓冲。
      • access_rules

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

        此监听器的访问控制规则。

      • proxy_protocol

        类型Boolean
        默认值false
        描述

        如果 EMQX 集群部署在 HAProxy 或 Nginx 之后,请启用代理协议 V1/2
        详情见: https://www.haproxy.com/blog/haproxy/proxy-protocol/

      • proxy_protocol_timeout

        类型Duration
        默认值3s
        描述

        代理协议超时。如果在超时时间内未收到代理协议数据包,EMQX 将关闭 TCP 连接。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • tcp_options

        类型Struct(tcp_opts)

        tcp_opts

        • active_n
          类型Integer
          默认值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 发送超时。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • send_timeout_close
          类型Boolean
          默认值true
          描述

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

        • recbuf
          类型Bytesize
          描述

          连接的 TCP 接收缓冲区(OS 内核)。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

        • sndbuf
          类型Bytesize
          描述

          连接的 TCP 发送缓冲区(OS 内核)。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

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

          驱动程序使用的用户空间缓冲区的大小。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

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

          当 VM 套接字实现内部排队的数据量达到此限制时,套接字将设置为忙碌状态。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

        • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • dhfile
          类型String
          描述

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

        • fail_if_no_peer_cert
          类型Boolean
          默认值false
          描述

          TLS/DTLS 服务器与 {verify,verify_peer} 一起使用。 如果设置为 true,则如果客户端没有要发送的证书,即发送空证书,服务器将失败。 如果设置为 false,则仅当客户端发送无效证书(空证书被视为有效证书)时才会失败。

        • honor_cipher_order
          类型Boolean
          默认值true
          描述

          一个重要的安全设置,它强制根据服务器指定的顺序而不是客户机指定的顺序设置密码,从而强制服务器管理员执行(通常配置得更正确)安全顺序。

        • client_renegotiation
          类型Boolean
          默认值true
          描述

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

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

          握手完成所允许的最长时间
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • websocket

        类型Struct(ws_opts)

        ws_opts

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

          WebSocket 的 MQTT 协议路径。因此,EMQX Broker 的 WebSocket 地址为: ws://{ip}:{port}/mqtt

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

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

        • compress
          类型Boolean
          默认值false
          描述

          如果 true,则使用 zlib 压缩 WebSocket 消息
          deflate_opts 下的配置项属于压缩相关参数配置。

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

          关闭在此间隔内未发送 MQTT CONNECT 消息的客户端的传输层连接。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • max_frame_size
          类型OneOf(String("infinity"),Integer)
          默认值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
            描述

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

    • 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
      • enable_authn

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

        配置 true (默认值)启用客户端进行身份认证,通过检查认配置的认认证器链来决定是否允许接入。 配置 false 时,将不对客户端做任何认证,任何客户端,不论是不是携带用户名等认证信息,都可以接入。 配置 quick_deny_anonymous 时,行为跟 true 类似,但是会对匿名 客户直接拒绝,不做使用任何认证器对客户端进行身份检查。

      • max_conn_rate

        类型String
        描述

        最大连接速率。
        这用于限制该节点的连接速率。 一旦达到限制,新的连接将被推迟或拒绝。
        例如:

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

        类型String
        描述

        消息发布速率。
        这用于限制该节点的入站消息数量。 一旦达到限制,受限制的客户端将减速甚至暂时挂起。
        例如:

        • 500/s:每秒只发送前500条消息,其他消息被缓冲。
        • 500/10s:即使是10秒,也只发送前500条消息,其他消息被缓冲。
      • bytes_rate

        类型String
        描述

        数据发布速率。
        这用于限制该节点的入站字节速率。 一旦达到限制,受限制的客户端将减速甚至暂时挂起。
        字节的单位可以是: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。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

    • 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 处理以选择订阅者;
      • hash_topic:对发布主题进行 Hash 处理以选择订阅者。
    • 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 容忍此延迟。

    • retry_interval

      类型Duration
      默认值30s
      描述

      QoS 1/2 消息的重新投递间隔。
      表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • use_username_as_clientid

      类型Boolean
      默认值false
      描述

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

    • 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 值
    • session_expiry_interval

      类型Duration
      默认值2h
      描述

      指定会话将在连接断开后多久过期,仅适用于非 MQTT 5.0 的连接。
      表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • 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] 默认优先级表为空,即所有的主题优先级相同。

      注:优先主题名称中不支持使用逗号和等号。 注:不在此列表中的主题,被视为最高/最低优先级,这取决于mqtt.mqueue_default_priority 的配置。

      示例: 配置 "topic/1" > "topic/2": 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

  • 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
        描述

        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 认证的字段。

    • 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
        描述

        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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • 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
        描述

        SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

      • log_level

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

        SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

      • hibernate_after

        类型Duration
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
        描述

        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。

    • 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
        描述

        SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

      • log_level

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

        SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

      • hibernate_after

        类型Duration
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
        描述

        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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • overflow_check_period

        类型Duration
        描述

        检查是否存在多余工作线程("溢出")的周期。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • local_threshold_ms

        类型Duration
        描述

        用于在多个合适的 MongoDB 实例中进行选择的延迟窗口的大小。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • connect_timeout_ms

        类型Duration
        描述

        在超时之前尝试连接的持续时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • socket_timeout_ms

        类型Duration
        描述

        在套接字上尝试发送或接收超时之前的持续时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • server_selection_timeout_ms

        类型Duration
        描述

        指定在抛出异常之前进行服务器选择的阻塞时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • wait_queue_timeout_ms

        类型Duration
        描述

        工作线程等待连接可用的最长时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • heartbeat_frequency_ms

        类型Duration
        默认值200s
        描述

        控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • min_heartbeat_frequency_ms

        类型Duration
        描述

        控制心跳之间等待的最短时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • 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
        描述

        SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

      • log_level

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

        SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

      • hibernate_after

        类型Duration
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
        描述

        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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • overflow_check_period

        类型Duration
        描述

        检查是否存在多余工作线程("溢出")的周期。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • local_threshold_ms

        类型Duration
        描述

        用于在多个合适的 MongoDB 实例中进行选择的延迟窗口的大小。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • connect_timeout_ms

        类型Duration
        描述

        在超时之前尝试连接的持续时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • socket_timeout_ms

        类型Duration
        描述

        在套接字上尝试发送或接收超时之前的持续时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • server_selection_timeout_ms

        类型Duration
        描述

        指定在抛出异常之前进行服务器选择的阻塞时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • wait_queue_timeout_ms

        类型Duration
        描述

        工作线程等待连接可用的最长时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • heartbeat_frequency_ms

        类型Duration
        默认值200s
        描述

        控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • min_heartbeat_frequency_ms

        类型Duration
        描述

        控制心跳之间等待的最短时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • 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
        描述

        SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

      • log_level

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

        SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

      • hibernate_after

        类型Duration
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
        描述

        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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • overflow_check_period

        类型Duration
        描述

        检查是否存在多余工作线程("溢出")的周期。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • local_threshold_ms

        类型Duration
        描述

        用于在多个合适的 MongoDB 实例中进行选择的延迟窗口的大小。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • connect_timeout_ms

        类型Duration
        描述

        在超时之前尝试连接的持续时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • socket_timeout_ms

        类型Duration
        描述

        在套接字上尝试发送或接收超时之前的持续时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • server_selection_timeout_ms

        类型Duration
        描述

        指定在抛出异常之前进行服务器选择的阻塞时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • wait_queue_timeout_ms

        类型Duration
        描述

        工作线程等待连接可用的最长时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • heartbeat_frequency_ms

        类型Duration
        默认值200s
        描述

        控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • min_heartbeat_frequency_ms

        类型Duration
        描述

        控制心跳之间等待的最短时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • 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
        描述

        SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

      • log_level

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

        SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

      • hibernate_after

        类型Duration
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
        描述

        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
        描述

        SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

      • log_level

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

        SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

      • hibernate_after

        类型Duration
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
        描述

        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
        描述

        SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

      • log_level

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

        SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

      • hibernate_after

        类型Duration
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
        描述

        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
        描述

        SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

      • log_level

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

        SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

      • hibernate_after

        类型Duration
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • enable

      类型Boolean
      默认值true
      描述

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

    • request

      类型Struct(request)
      描述

      配置 HTTP 请求参数。

      request

      • method

        类型String
        描述

        HTTP 请求方法。

      • path

        类型String
        描述

        URL 路径。

      • body

        类型String
        描述

        HTTP 请求的主体。

      • headers

        类型Map
        描述

        HTTP 请求头列表。

      • max_retries

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

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

      • request_timeout

        类型Duration
        描述

        HTTP 请求超时时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • 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
        描述

        SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

      • log_level

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

        SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

      • hibernate_after

        类型Duration
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
      描述

      连接池大小。

    • max_retries

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

      Deprecated since 5.0.4.

    • connect_timeout

      类型Duration
      默认值15s
      描述

      连接到 HTTP 服务器的超时时间。
      表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • enable_pipelining

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

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

    • retry_interval

      类型Duration
      描述

      Deprecated since 5.0.4.
      表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • enable

      类型Boolean
      默认值true
      描述

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

    • request

      类型Struct(request)
      描述

      配置 HTTP 请求参数。

      request

      • method

        类型String
        描述

        HTTP 请求方法。

      • path

        类型String
        描述

        URL 路径。

      • body

        类型String
        描述

        HTTP 请求的主体。

      • headers

        类型Map
        描述

        HTTP 请求头列表。

      • max_retries

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

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

      • request_timeout

        类型Duration
        描述

        HTTP 请求超时时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • 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
        描述

        SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

      • log_level

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

        SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

      • hibernate_after

        类型Duration
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
      描述

      连接池大小。

    • max_retries

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

      Deprecated since 5.0.4.

    • connect_timeout

      类型Duration
      默认值15s
      描述

      连接到 HTTP 服务器的超时时间。
      表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • enable_pipelining

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

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

    • retry_interval

      类型Duration
      描述

      Deprecated since 5.0.4.
      表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    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 中要求的内容是否匹配。
    • 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 中要求的内容是否匹配。
    • from

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

      指定客户端连接请求中 JWT 的位置。

    • enable

      类型Boolean
      默认值true
      描述

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

    jwt_jwks

    • use_jwks

      类型Enum(true)
      描述

      是否使用 JWKS。

    • endpoint

      类型String
      描述

      JWKS 端点, 它是一个以 JWKS 格式返回服务端的公钥集的只读端点。

    • 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
        描述

        SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

      • log_level

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

        SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

      • hibernate_after

        类型Duration
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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 中要求的内容是否匹配。
    • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • 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
        描述

        SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

      • log_level

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

        SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

      • hibernate_after

        类型Duration
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • 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
        描述

        SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

      • log_level

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

        SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

      • hibernate_after

        类型Duration
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • max_retries

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

        Deprecated since 5.0.4.

      • retry_interval

        类型Duration
        描述

        Deprecated since 5.0.4.
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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 路径。

        • body
          类型String
          描述

          HTTP 请求的主体。

        • headers
          类型Map
          描述

          HTTP 请求头列表。

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

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

        • request_timeout
          类型Duration
          描述

          HTTP 请求超时时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • max_retries

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

        Deprecated since 5.0.4.

      • retry_interval

        类型Duration
        描述

        Deprecated since 5.0.4.
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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 路径。

        • body
          类型String
          描述

          HTTP 请求的主体。

        • headers
          类型Map
          描述

          HTTP 请求头列表。

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

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

        • request_timeout
          类型Duration
          描述

          HTTP 请求超时时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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。

      • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • overflow_check_period
          类型Duration
          描述

          检查是否存在多余工作线程("溢出")的周期。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • local_threshold_ms
          类型Duration
          描述

          用于在多个合适的 MongoDB 实例中进行选择的延迟窗口的大小。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • connect_timeout_ms
          类型Duration
          描述

          在超时之前尝试连接的持续时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • socket_timeout_ms
          类型Duration
          描述

          在套接字上尝试发送或接收超时之前的持续时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • server_selection_timeout_ms
          类型Duration
          描述

          指定在抛出异常之前进行服务器选择的阻塞时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • wait_queue_timeout_ms
          类型Duration
          描述

          工作线程等待连接可用的最长时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • heartbeat_frequency_ms
          类型Duration
          默认值200s
          描述

          控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • min_heartbeat_frequency_ms
          类型Duration
          描述

          控制心跳之间等待的最短时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • overflow_check_period
          类型Duration
          描述

          检查是否存在多余工作线程("溢出")的周期。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • local_threshold_ms
          类型Duration
          描述

          用于在多个合适的 MongoDB 实例中进行选择的延迟窗口的大小。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • connect_timeout_ms
          类型Duration
          描述

          在超时之前尝试连接的持续时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • socket_timeout_ms
          类型Duration
          描述

          在套接字上尝试发送或接收超时之前的持续时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • server_selection_timeout_ms
          类型Duration
          描述

          指定在抛出异常之前进行服务器选择的阻塞时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • wait_queue_timeout_ms
          类型Duration
          描述

          工作线程等待连接可用的最长时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • heartbeat_frequency_ms
          类型Duration
          默认值200s
          描述

          控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • min_heartbeat_frequency_ms
          类型Duration
          描述

          控制心跳之间等待的最短时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • overflow_check_period
          类型Duration
          描述

          检查是否存在多余工作线程("溢出")的周期。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • local_threshold_ms
          类型Duration
          描述

          用于在多个合适的 MongoDB 实例中进行选择的延迟窗口的大小。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • connect_timeout_ms
          类型Duration
          描述

          在超时之前尝试连接的持续时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • socket_timeout_ms
          类型Duration
          描述

          在套接字上尝试发送或接收超时之前的持续时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • server_selection_timeout_ms
          类型Duration
          描述

          指定在抛出异常之前进行服务器选择的阻塞时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • wait_queue_timeout_ms
          类型Duration
          描述

          工作线程等待连接可用的最长时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • heartbeat_frequency_ms
          类型Duration
          默认值200s
          描述

          控制驱动程序何时检查 MongoDB 部署的状态。指定检查之间的时间间隔,从上次检查结束到下次检查开始计算。如果连接数增加(例如,如果增加了池大小),则可能需要增加此时间间隔,以避免在 MongoDB 日志文件中创建过多的日志条目。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • min_heartbeat_frequency_ms
          类型Duration
          描述

          控制心跳之间等待的最短时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • 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,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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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)

    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 用于结构化日志记录。

      • 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 用于结构化日志记录。

      • 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 用于结构化日志记录。

      • time_offset

        类型String
        默认值system
        描述

        日志中的时间戳使用的时间偏移量。 可选值为:

        • system: 本地系统使用的时区偏移量
        • utc: 0 时区的偏移量
        • +-[hh]:[mm]: 自定义偏移量,比如 "-02:00" 或者 "+00:00" 默认值为本地系统的时区偏移量:system
  • 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 且 dirver 设置为 ssl, 此配置才会生效。

    • tcp_client_num

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

      设置本节点与远程节点之间的 RPC 通信通道的最大数量。

    • connect_timeout

      类型Duration
      默认值5s
      描述

      建立 RPC 连接的超时时间。
      表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • authentication_timeout

      类型Duration
      默认值5s
      描述

      远程节点认证的超时时间。
      表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • call_receive_timeout

      类型Duration
      默认值15s
      描述

      同步 RPC 的回复超时时间。
      表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • socket_keepalive_idle

      类型Duration(s)
      默认值15m
      描述

      broker 之间的连接在最后一条消息发送后保持打开的时间。
      表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • socket_keepalive_interval

      类型Duration(s)
      默认值75s
      描述

      keepalive 消息的间隔。
      表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • socket_keepalive_count

      类型Integer
      默认值9
      描述

      keepalive 探测消息发送失败的次数,直到 RPC 连接被认为已经断开。

    • socket_sndbuf

      类型Bytesize
      默认值1MB
      描述

      TCP 调节参数。TCP 发送缓冲区大小。
      表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

    • socket_recbuf

      类型Bytesize
      默认值1MB
      描述

      TCP 调节参数。TCP 接收缓冲区大小。
      表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

    • socket_buffer

      类型Bytesize
      默认值1MB
      描述

      TCP 调节参数。用户模式套接字缓冲区大小。
      表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

    • 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 服务器中都是独立的一个进程。该配置可以设为单个进程的邮箱消息队列设置最大长度,当超过该上限时,客户端会被强制下线。

    • max_heap_size

      类型Bytesize
      默认值32MB
      描述

      Heap 的总大小。
      表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

  • force_gc

    类型Struct(force_gc)

    force_gc

    • enable

      类型Boolean
      默认值true
      描述

      启用强制垃圾回收。

    • count

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

      在进程收到多少消息之后,对此进程执行垃圾回收。

    • bytes

      类型Bytesize
      默认值16MB
      描述

      在进程处理过多少个字节之后,对此进程执行垃圾回收。
      表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

  • sysmon

    类型Struct(sysmon)

    sysmon

    • vm

      类型Struct(sysmon_vm)

      sysmon_vm

      • process_check_interval

        类型Duration
        默认值30s
        描述

        定期进程限制检查的时间间隔。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
        描述

        启用后,当一个 Erlang 进程申请了大量内存,系统会触发一条带有 large_heap 关键字的 warning 级别日志。同时还会发布一条主题为 $SYS/sysmon/busy_dist_port 的 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • cpu_high_watermark

        类型String
        默认值80%
        描述

        在发出相应警报之前可以使用多少系统 CPU 的阈值,以系统 CPU 负载的百分比表示。

      • cpu_low_watermark

        类型String
        默认值60%
        描述

        在解除相应警报之前可以使用多少系统 CPU 的阈值,以系统 CPU 负载的百分比表示。

      • mem_check_interval

        类型OneOf(String("disabled"),Duration)
        默认值60s
        描述

        定期内存检查的时间间隔。

      • sysmem_high_watermark

        类型String
        默认值70%
        描述

        在发出相应报警之前可以分配多少系统内存的阈值,以系统内存的百分比表示。

      • procmem_high_watermark

        类型String
        默认值5%
        描述

        在发出相应警报之前,一个 Erlang 进程可以分配多少系统内存的阈值,以系统内存的百分比表示。

  • alarm

    类型Struct(alarm)

    alarm

    • actions

      类型Array(String)
      默认值[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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

  • flapping_detect

    类型Struct(flapping_detect)

    flapping_detect

    • enable

      类型Boolean
      默认值false
      描述

      启用抖动检测功能。

    • window_time

      类型Duration
      默认值1m
      描述

      抖动检测的时间窗口。
      表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • max_count

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

      MQTT 客户端在“窗口”时间内允许的最大断开次数

    • ban_time

      类型Duration
      默认值5m
      描述

      抖动的客户端将会被禁止登录多长时间。
      表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

  • bridges

    类型Struct(bridges)

    bridges

    • webhook

      类型Map($name->Struct(config))
      描述

      转发消息到 HTTP 服务器的 WebHook

      config

      • enable

        类型Boolean
        默认值true
        描述

        启用或停用动作

      • tags

        类型Array(String)
        描述

        连接器的标签

      • description

        类型String
        默认值""
        描述

        描述性文本。

      • connect_timeout

        类型Duration
        默认值15s
        描述

        连接到 HTTP 服务器的超时时间。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • retry_interval

        类型Duration
        描述

        Deprecated since 5.0.4.
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

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

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

      • url

        类型String
        描述

        HTTP 动作的 URL。
        此路径允许使用带有变量的模板,但变量不能用于方案、主机或端口部分。
        例如, http://localhost:9901/${topic} 是允许的,但 http://${host}:9901/message http://localhost:${port}/message 是不允许的。

      • direction

        类型String("egress")
        描述

        Deprecated since 5.0.12.

      • local_topic

        类型String
        描述

        将要转发到 HTTP 服务器的 MQTT 主题过滤器。所有与 local_topic 匹配的 MQTT 'PUBLISH' 消息都将被转发。
        注意:如果将此动作用作规则的操作(EMQX 规则引擎),并且同时配置了 local_topic,那么将同时转发从规则获取的数据和与 local_topic 匹配的 MQTT 消息。

      • 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 时的事件上下文。
        允许使用带有变量的模板。

      • max_retries

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

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

      • request_timeout

        类型Duration
        描述

        Deprecated since v5.0.26.
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • resource_opts

        类型Struct(v1_resource_opts)
        默认值{}
        描述

        资源相关的选项。

        v1_resource_opts

        • worker_pool_size
          类型Integer(1..1024)
          默认值16
          描述

          缓存队列 worker 数量。仅对 egress 类型的桥接有意义。当桥接仅有 ingress 方向时,可设置为 0,否则必须大于 0。

        • health_check_interval
          类型Duration
          默认值15s
          描述

          健康检查间隔。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • start_after_created
          类型Boolean
          默认值true
          描述

          是否在创建资源后立即启动资源。

        • start_timeout
          类型Duration
          默认值5s
          描述

          在回复资源创建请求前等待资源进入健康状态的时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • auto_restart_interval
          类型OneOf(String("infinity"),Duration)
          描述

          Deprecated since 5.1.0.

        • 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。

        • enable_queue
          类型Boolean
          描述

          Deprecated since v5.0.14.

        • max_buffer_bytes
          别名max_queue_bytes
          类型Bytesize
          默认值256MB
          描述

          每个缓存 worker 允许使用的最大字节数。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

    • mqtt

      类型Map($name->Struct(config))
      描述

      桥接到另一个 MQTT Broker 的 MQTT 数据桥接

      config

      • enable

        类型Boolean
        默认值true
        描述

        启用/禁用数据桥接

      • tags

        类型Array(String)
        描述

        连接器的标签

      • description

        类型String
        默认值""
        描述

        描述性文本。

      • resource_opts

        类型Struct(creation_opts)
        默认值{}
        描述

        资源相关的选项。

        creation_opts

        • worker_pool_size
          类型Integer(1..1024)
          默认值16
          描述

          缓存队列 worker 数量。仅对 egress 类型的桥接有意义。当桥接仅有 ingress 方向时,可设置为 0,否则必须大于 0。

        • health_check_interval
          类型Duration
          默认值15s
          描述

          健康检查间隔。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • start_after_created
          类型Boolean
          默认值true
          描述

          是否在创建资源后立即启动资源。

        • start_timeout
          类型Duration
          默认值5s
          描述

          在回复资源创建请求前等待资源进入健康状态的时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • auto_restart_interval
          类型OneOf(String("infinity"),Duration)
          描述

          Deprecated since 5.1.0.

        • 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。

        • enable_queue
          类型Boolean
          描述

          Deprecated since v5.0.14.

        • max_buffer_bytes
          别名max_queue_bytes
          类型Bytesize
          默认值256MB
          描述

          每个缓存 worker 允许使用的最大字节数。
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

      • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

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

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

      • ingress

        类型Struct(ingress)
        描述

        ingress 配置定义了此动作如何从远程 MQTT 代理接收消息,然后将它们发送到本地代理。
        允许在'remote.qos'、'local.topic'、'local.qos'、'local.retain'、'local.payload'中使用带有变量的模板。
        注意:如果将此动作用作规则的输入,并且还配置了'local.topic',则从远程代理获取的消息将发送到'local.topic'和规则。

        ingress

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

          将从远程代理接收消息的 MQTT 客户端池的大小。
          仅当'remote.topic'是共享订阅主题或主题过滤器时才会尊重此值, (例如$share/name1/topic1或$share/name2/topic2/#),否则只会使用一个 MQTT 客户端。 每个 MQTT 客户端都将分配'clientid',格式为'${clientid_prefix}:${bridge_name}:ingress:${node}:${n}' 其中'n'是池中客户端的编号。 注意:当 EMQX 进行集群化时,非共享订阅将无法正常工作。

        • remote
          类型Struct(ingress_remote)
          描述

          关于向远程代理订阅的配置。

          ingress_remote

          • topic
            类型String
            描述

            从远程代理接收消息的主题

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

            订阅远程代理时要使用的 QoS 级别.

        • local
          类型Struct(ingress_local)
          描述

          关于向本地代理发送消息的配置。

          ingress_local

          • topic
            类型String
            描述

            要发送到本地代理的主题。
            允许使用带有变量的模板。

          • qos
            类型OneOf(Integer(0..2),String)
            默认值"${qos}"
            描述

            要发送的 MQTT 消息的 QoS 级别。
            允许使用带有变量的模板。

          • retain
            类型OneOf(Boolean,String)
            默认值"${retain}"
            描述

            要发送的 MQTT 消息的'retain'标志。
            允许使用带有变量的模板。

          • payload
            类型String
            描述

            要发送的 MQTT 消息的有效载荷。
            允许使用带有变量的模板。

      • egress

        类型Struct(egress)
        描述

        egress 配置定义了此动作如何将消息从本地代理转发到远程代理。
        允许在'remote.topic'、'local.qos'、'local.retain'、'local.payload'中使用带有变量的模板。
        注意:如果将此动作用作规则的动作,并且还配置了'local.topic',则从规则获取的数据和与 'local.topic'匹配的 MQTT 消息都将被转发。

        egress

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

          将发布消息到远程代理的 MQTT 客户端池的大小。
          每个 MQTT 客户端都将分配'clientid',格式为'${clientid_prefix}:${bridge_name}:egress:${node}:${n}' 其中'n'是池中客户端的编号。

        • local
          类型Struct(egress_local)
          描述

          关于从本地代理接收消息的配置。

          egress_local

          • topic
            类型String
            描述

            要转发到远程代理的本地主题

        • remote
          类型Struct(egress_remote)
          描述

          关于向远程代理发送消息的配置。

          egress_remote

          • topic
            类型String
            描述

            要转发到远程代理的主题。
            允许使用带有变量的模板。

          • qos
            类型OneOf(Integer(0..2),String)
            默认值1
            描述

            要发送的 MQTT 消息的 QoS 级别。
            允许使用带有变量的模板。

          • retain
            类型OneOf(Boolean,String)
            默认值false
            描述

            要发送的 MQTT 消息的'retain'标志。
            允许使用带有变量的模板。

          • payload
            类型String
            描述

            要发送的 MQTT 消息的有效载荷。
            允许使用带有变量的模板。

  • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • retry_interval

        类型Duration
        描述

        Deprecated since 5.0.4.
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • start_after_created
          类型Boolean
          默认值true
          描述

          是否在创建资源后立即启动资源。

        • start_timeout
          类型Duration
          默认值5s
          描述

          在回复资源创建请求前等待资源进入健康状态的时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • mqtt

      类型Map($name->Struct(config_connector))
      描述

      MQTT Publisher 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • start_after_created
          类型Boolean
          默认值true
          描述

          是否在创建资源后立即启动资源。

        • start_timeout
          类型Duration
          默认值5s
          描述

          在回复资源创建请求前等待资源进入健康状态的时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

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

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

  • 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}

        • 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 时的事件上下文。
          允许使用带有变量的模板。

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

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

        • request_timeout
          类型Duration
          描述

          Deprecated since v5.0.26.
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

    • 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
          描述

          要转发到远程代理的主题。
          允许使用带有变量的模板。

        • qos
          类型OneOf(Integer(0..2),String)
          默认值1
          描述

          要发送的 MQTT 消息的 QoS 级别。
          允许使用带有变量的模板。

        • retain
          类型OneOf(Boolean,String)
          默认值false
          描述

          要发送的 MQTT 消息的'retain'标志。
          允许使用带有变量的模板。

        • payload
          类型String
          描述

          要发送的 MQTT 消息的有效载荷。
          允许使用带有变量的模板。

      • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

  • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

  • retainer

    类型Struct(retainer)

    retainer

    • enable

      类型Boolean
      默认值true
      描述

      是否开启消息保留功能

    • msg_expiry_interval

      类型Duration
      默认值0s
      描述

      消息保留时间。0 代表永久保留
      表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • msg_clear_interval

      类型Duration
      默认值0s
      描述

      消息清理间隔。0 代表不进行清理
      表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • max_payload_size

      类型Bytesize
      默认值1MB
      描述

      消息大小最大值
      表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

    • 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.

  • telemetry

    类型Struct(telemetry)

    telemetry

    • enable

      类型Boolean
      描述

      设置为 false 可以关闭数据发送。

  • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

  • 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
          默认值8
          描述

          TCP 协议的 Socket acceptor 池大小, 通常配置为 CPU 核数

        • max_connections
          类型Integer
          默认值512
          描述

          同时处理的最大连接数。

        • backlog
          类型Integer
          默认值1024
          描述

          排队等待连接的队列的最大长度。

        • send_timeout
          类型Duration
          默认值10s
          描述

          发送响应内容的超时时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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
            描述

            SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

            SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

            在闲置一定时间后休眠 SSL 进程,减少其内存占用。
            表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

          • dhfile
            类型String
            描述

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

          • honor_cipher_order
            类型Boolean
            默认值true
            描述

            一个重要的安全设置,它强制根据服务器指定的顺序而不是客户机指定的顺序设置密码,从而强制服务器管理员执行(通常配置得更正确)安全顺序。

          • client_renegotiation
            类型Boolean
            默认值true
            描述

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

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

            握手完成所允许的最长时间
            表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • num_acceptors
          类型Integer
          默认值8
          描述

          TCP 协议的 Socket acceptor 池大小, 通常配置为 CPU 核数

        • max_connections
          类型Integer
          默认值512
          描述

          同时处理的最大连接数。

        • backlog
          类型Integer
          默认值1024
          描述

          排队等待连接的队列的最大长度。

        • send_timeout
          类型Duration
          默认值10s
          描述

          发送响应内容的超时时间。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • cors

      类型Boolean
      默认值false
      描述

      CORS(Cross-Origin Resource Sharing,跨域资源共享)允许服务器响应来自任何来源(域名、协议或端口)的请求,启用后允许另一个域名下的服务直接通过 JavaScript 调用 EMQX REST API。

  • gateway

    类型Struct(gateway)

    gateway

    • 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
              默认值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 发送超时。
              表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • send_timeout_close
              类型Boolean
              默认值true
              描述

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

            • recbuf
              类型Bytesize
              描述

              连接的 TCP 接收缓冲区(OS 内核)。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • sndbuf
              类型Bytesize
              描述

              连接的 TCP 发送缓冲区(OS 内核)。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

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

              驱动程序使用的用户空间缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

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

              当 VM 套接字实现内部排队的数据量达到此限制时,套接字将设置为忙碌状态。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • 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
            描述

            是否开启 Proxy Protocol V1/2。当 EMQX 集群部署在 HAProxy 或 Nginx 后需要获取客户端真实 IP 时常用到该选项。参考:https://www.haproxy.com/blog/haproxy/proxy-protocol/

          • proxy_protocol_timeout
            类型Duration
            默认值3s
            描述

            接收 Proxy Protocol 报文头的超时时间。如果在超时内没有收到 Proxy Protocol 包,EMQX 将关闭 TCP 连接。
            表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

          • 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)
            默认值[]
            描述

            配置监听器的访问控制规则。 见:https://github.com/emqtt/esockd#allowdeny

        • ssl
          类型Map($name->Struct(ssl_listener))
          描述

          从监听器名称到配置参数的映射。

          ssl_listener

          • acceptors
            类型Integer
            默认值16
            描述

            Acceptor 进程池大小。

          • tcp_options
            类型Struct(tcp_opts)
            描述

            TCP Socket 配置。

            tcp_opts

            • active_n
              类型Integer
              默认值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 发送超时。
              表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • send_timeout_close
              类型Boolean
              默认值true
              描述

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

            • recbuf
              类型Bytesize
              描述

              连接的 TCP 接收缓冲区(OS 内核)。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • sndbuf
              类型Bytesize
              描述

              连接的 TCP 发送缓冲区(OS 内核)。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

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

              驱动程序使用的用户空间缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

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

              当 VM 套接字实现内部排队的数据量达到此限制时,套接字将设置为忙碌状态。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • 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
            描述

            是否开启 Proxy Protocol V1/2。当 EMQX 集群部署在 HAProxy 或 Nginx 后需要获取客户端真实 IP 时常用到该选项。参考:https://www.haproxy.com/blog/haproxy/proxy-protocol/

          • proxy_protocol_timeout
            类型Duration
            默认值3s
            描述

            接收 Proxy Protocol 报文头的超时时间。如果在超时内没有收到 Proxy Protocol 包,EMQX 将关闭 TCP 连接。
            表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

          • 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)
            默认值[]
            描述

            配置监听器的访问控制规则。 见:https://github.com/emqtt/esockd#allowdeny

          • 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
              描述

              SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

              SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

              在闲置一定时间后休眠 SSL 进程,减少其内存占用。
              表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • dhfile
              类型String
              描述

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

            • fail_if_no_peer_cert
              类型Boolean
              默认值false
              描述

              TLS/DTLS 服务器与 {verify,verify_peer} 一起使用。 如果设置为 true,则如果客户端没有要发送的证书,即发送空证书,服务器将失败。 如果设置为 false,则仅当客户端发送无效证书(空证书被视为有效证书)时才会失败。

            • honor_cipher_order
              类型Boolean
              默认值true
              描述

              一个重要的安全设置,它强制根据服务器指定的顺序而不是客户机指定的顺序设置密码,从而强制服务器管理员执行(通常配置得更正确)安全顺序。

            • client_renegotiation
              类型Boolean
              默认值true
              描述

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

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

              握手完成所允许的最长时间
              表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

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

                检查 OCSP 响应时,HTTP 请求的超时。
                表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • enable_crl_check
              类型Boolean
              默认值false
              描述

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

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该网关

      • enable_stats

        类型Boolean
        默认值true
        描述

        是否开启客户端统计

      • idle_timeout

        类型Duration
        默认值30s
        描述

        客户端连接过程的空闲时间。该配置用于:

        1. 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
        2. 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。
      • 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
            描述

            SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

            SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

            在闲置一定时间后休眠 SSL 进程,减少其内存占用。
            表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

          • dhfile
            类型String
            描述

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

          • fail_if_no_peer_cert
            类型Boolean
            默认值false
            描述

            TLS/DTLS 服务器与 {verify,verify_peer} 一起使用。 如果设置为 true,则如果客户端没有要发送的证书,即发送空证书,服务器将失败。 如果设置为 false,则仅当客户端发送无效证书(空证书被视为有效证书)时才会失败。

          • honor_cipher_order
            类型Boolean
            默认值true
            描述

            一个重要的安全设置,它强制根据服务器指定的顺序而不是客户机指定的顺序设置密码,从而强制服务器管理员执行(通常配置得更正确)安全顺序。

          • client_renegotiation
            类型Boolean
            默认值true
            描述

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

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

            握手完成所允许的最长时间
            表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
            描述

            SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

            SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

            在闲置一定时间后休眠 SSL 进程,减少其内存占用。
            表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

          • 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
              默认值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 发送超时。
              表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • send_timeout_close
              类型Boolean
              默认值true
              描述

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

            • recbuf
              类型Bytesize
              描述

              连接的 TCP 接收缓冲区(OS 内核)。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • sndbuf
              类型Bytesize
              描述

              连接的 TCP 发送缓冲区(OS 内核)。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

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

              驱动程序使用的用户空间缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

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

              当 VM 套接字实现内部排队的数据量达到此限制时,套接字将设置为忙碌状态。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • 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
            描述

            是否开启 Proxy Protocol V1/2。当 EMQX 集群部署在 HAProxy 或 Nginx 后需要获取客户端真实 IP 时常用到该选项。参考:https://www.haproxy.com/blog/haproxy/proxy-protocol/

          • proxy_protocol_timeout
            类型Duration
            默认值3s
            描述

            接收 Proxy Protocol 报文头的超时时间。如果在超时内没有收到 Proxy Protocol 包,EMQX 将关闭 TCP 连接。
            表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

          • 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)
            默认值[]
            描述

            配置监听器的访问控制规则。 见:https://github.com/emqtt/esockd#allowdeny

        • ssl
          类型Map($name->Struct(ssl_listener))
          描述

          从监听器名称到配置参数的映射。

          ssl_listener

          • acceptors
            类型Integer
            默认值16
            描述

            Acceptor 进程池大小。

          • tcp_options
            类型Struct(tcp_opts)
            描述

            TCP Socket 配置。

            tcp_opts

            • active_n
              类型Integer
              默认值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 发送超时。
              表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • send_timeout_close
              类型Boolean
              默认值true
              描述

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

            • recbuf
              类型Bytesize
              描述

              连接的 TCP 接收缓冲区(OS 内核)。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • sndbuf
              类型Bytesize
              描述

              连接的 TCP 发送缓冲区(OS 内核)。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

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

              驱动程序使用的用户空间缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

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

              当 VM 套接字实现内部排队的数据量达到此限制时,套接字将设置为忙碌状态。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • 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
            描述

            是否开启 Proxy Protocol V1/2。当 EMQX 集群部署在 HAProxy 或 Nginx 后需要获取客户端真实 IP 时常用到该选项。参考:https://www.haproxy.com/blog/haproxy/proxy-protocol/

          • proxy_protocol_timeout
            类型Duration
            默认值3s
            描述

            接收 Proxy Protocol 报文头的超时时间。如果在超时内没有收到 Proxy Protocol 包,EMQX 将关闭 TCP 连接。
            表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

          • 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)
            默认值[]
            描述

            配置监听器的访问控制规则。 见:https://github.com/emqtt/esockd#allowdeny

          • 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
              描述

              SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

              SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

              在闲置一定时间后休眠 SSL 进程,减少其内存占用。
              表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • dhfile
              类型String
              描述

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

            • fail_if_no_peer_cert
              类型Boolean
              默认值false
              描述

              TLS/DTLS 服务器与 {verify,verify_peer} 一起使用。 如果设置为 true,则如果客户端没有要发送的证书,即发送空证书,服务器将失败。 如果设置为 false,则仅当客户端发送无效证书(空证书被视为有效证书)时才会失败。

            • honor_cipher_order
              类型Boolean
              默认值true
              描述

              一个重要的安全设置,它强制根据服务器指定的顺序而不是客户机指定的顺序设置密码,从而强制服务器管理员执行(通常配置得更正确)安全顺序。

            • client_renegotiation
              类型Boolean
              默认值true
              描述

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

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

              握手完成所允许的最长时间
              表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

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

                检查 OCSP 响应时,HTTP 请求的超时。
                表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • enable_crl_check
              类型Boolean
              默认值false
              描述

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

        • udp
          类型Map($name->Struct(udp_listener))
          描述

          从监听器名称到配置参数的映射。

          udp_listener

          • 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。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • sndbuf
              类型Bytesize
              描述

              Socket 在内核空间发送缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • buffer
              类型Bytesize
              描述

              Socket 在用户空间的缓冲区大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • 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)
            默认值[]
            描述

            配置监听器的访问控制规则。 见:https://github.com/emqtt/esockd#allowdeny

        • dtls
          类型Map($name->Struct(dtls_listener))
          描述

          从监听器名称到配置参数的映射。

          dtls_listener

          • acceptors
            类型Integer
            默认值16
            描述

            Acceptor 进程池大小。

          • 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。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • sndbuf
              类型Bytesize
              描述

              Socket 在内核空间发送缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • buffer
              类型Bytesize
              描述

              Socket 在用户空间的缓冲区大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • 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)
            默认值[]
            描述

            配置监听器的访问控制规则。 见:https://github.com/emqtt/esockd#allowdeny

          • 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
              描述

              SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

              SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

              在闲置一定时间后休眠 SSL 进程,减少其内存占用。
              表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • dhfile
              类型String
              描述

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

            • fail_if_no_peer_cert
              类型Boolean
              默认值false
              描述

              TLS/DTLS 服务器与 {verify,verify_peer} 一起使用。 如果设置为 true,则如果客户端没有要发送的证书,即发送空证书,服务器将失败。 如果设置为 false,则仅当客户端发送无效证书(空证书被视为有效证书)时才会失败。

            • honor_cipher_order
              类型Boolean
              默认值true
              描述

              一个重要的安全设置,它强制根据服务器指定的顺序而不是客户机指定的顺序设置密码,从而强制服务器管理员执行(通常配置得更正确)安全顺序。

            • client_renegotiation
              类型Boolean
              默认值true
              描述

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

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

              握手完成所允许的最长时间
              表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

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

                检查 OCSP 响应时,HTTP 请求的超时。
                表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • enable_crl_check
              类型Boolean
              默认值false
              描述

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

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该网关

      • enable_stats

        类型Boolean
        默认值true
        描述

        是否开启客户端统计

      • idle_timeout

        类型Duration
        默认值30s
        描述

        客户端连接过程的空闲时间。该配置用于:

        1. 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
        2. 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。
      • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • lifetime_max

        类型Duration
        默认值86400s
        描述

        允许 LwM2M 客户端允许设置的心跳最大值。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • qmode_time_window

        类型Duration(s)
        默认值22s
        描述

        在 QMode 模式下,LwM2M 网关认为网络链接有效的时间窗口的值。 例如,在收到客户端的更新信息后,在这个时间窗口内的任何信息都会直接发送到 LwM2M 客户端,而超过这个时间窗口的所有信息都会暂时储存在内存中。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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

          • 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。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • sndbuf
              类型Bytesize
              描述

              Socket 在内核空间发送缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • buffer
              类型Bytesize
              描述

              Socket 在用户空间的缓冲区大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • 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)
            默认值[]
            描述

            配置监听器的访问控制规则。 见:https://github.com/emqtt/esockd#allowdeny

        • dtls
          类型Map($name->Struct(dtls_listener))
          描述

          从监听器名称到配置参数的映射。

          dtls_listener

          • acceptors
            类型Integer
            默认值16
            描述

            Acceptor 进程池大小。

          • 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。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • sndbuf
              类型Bytesize
              描述

              Socket 在内核空间发送缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • buffer
              类型Bytesize
              描述

              Socket 在用户空间的缓冲区大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • 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)
            默认值[]
            描述

            配置监听器的访问控制规则。 见:https://github.com/emqtt/esockd#allowdeny

          • 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
              描述

              SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

              SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

              在闲置一定时间后休眠 SSL 进程,减少其内存占用。
              表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • dhfile
              类型String
              描述

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

            • fail_if_no_peer_cert
              类型Boolean
              默认值false
              描述

              TLS/DTLS 服务器与 {verify,verify_peer} 一起使用。 如果设置为 true,则如果客户端没有要发送的证书,即发送空证书,服务器将失败。 如果设置为 false,则仅当客户端发送无效证书(空证书被视为有效证书)时才会失败。

            • honor_cipher_order
              类型Boolean
              默认值true
              描述

              一个重要的安全设置,它强制根据服务器指定的顺序而不是客户机指定的顺序设置密码,从而强制服务器管理员执行(通常配置得更正确)安全顺序。

            • client_renegotiation
              类型Boolean
              默认值true
              描述

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

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

              握手完成所允许的最长时间
              表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

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

                检查 OCSP 响应时,HTTP 请求的超时。
                表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • enable_crl_check
              类型Boolean
              默认值false
              描述

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

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该网关

      • enable_stats

        类型Boolean
        默认值true
        描述

        是否开启客户端统计

      • idle_timeout

        类型Duration
        默认值30s
        描述

        客户端连接过程的空闲时间。该配置用于:

        1. 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
        2. 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。
      • 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

          • 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。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • sndbuf
              类型Bytesize
              描述

              Socket 在内核空间发送缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • buffer
              类型Bytesize
              描述

              Socket 在用户空间的缓冲区大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • 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)
            默认值[]
            描述

            配置监听器的访问控制规则。 见:https://github.com/emqtt/esockd#allowdeny

        • dtls
          类型Map($name->Struct(dtls_listener))
          描述

          从监听器名称到配置参数的映射。

          dtls_listener

          • acceptors
            类型Integer
            默认值16
            描述

            Acceptor 进程池大小。

          • 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。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • sndbuf
              类型Bytesize
              描述

              Socket 在内核空间发送缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • buffer
              类型Bytesize
              描述

              Socket 在用户空间的缓冲区大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • 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)
            默认值[]
            描述

            配置监听器的访问控制规则。 见:https://github.com/emqtt/esockd#allowdeny

          • 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
              描述

              SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

              SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

              在闲置一定时间后休眠 SSL 进程,减少其内存占用。
              表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • dhfile
              类型String
              描述

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

            • fail_if_no_peer_cert
              类型Boolean
              默认值false
              描述

              TLS/DTLS 服务器与 {verify,verify_peer} 一起使用。 如果设置为 true,则如果客户端没有要发送的证书,即发送空证书,服务器将失败。 如果设置为 false,则仅当客户端发送无效证书(空证书被视为有效证书)时才会失败。

            • honor_cipher_order
              类型Boolean
              默认值true
              描述

              一个重要的安全设置,它强制根据服务器指定的顺序而不是客户机指定的顺序设置密码,从而强制服务器管理员执行(通常配置得更正确)安全顺序。

            • client_renegotiation
              类型Boolean
              默认值true
              描述

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

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

              握手完成所允许的最长时间
              表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

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

                检查 OCSP 响应时,HTTP 请求的超时。
                表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • enable_crl_check
              类型Boolean
              默认值false
              描述

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

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该网关

      • enable_stats

        类型Boolean
        默认值true
        描述

        是否开启客户端统计

      • idle_timeout

        类型Duration
        默认值30s
        描述

        客户端连接过程的空闲时间。该配置用于:

        1. 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
        2. 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。
      • clientinfo_override

        类型Struct(clientinfo_override)
        描述

        ClientInfo 重写。

        clientinfo_override

        • username
          类型String
          描述

          username 重写模板

        • password
          类型String
          描述

          password 重写模板

        • clientid
          类型String
          描述

          clientid 重写模板

    • coap

      类型Struct(coap)

      coap

      • heartbeat

        类型Duration
        默认值30s
        描述

        CoAP 网关要求客户端的最小心跳间隔时间。 当 connection_required 开启后,该参数用于检查客户端连接是否存活
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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

          • 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。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • sndbuf
              类型Bytesize
              描述

              Socket 在内核空间发送缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • buffer
              类型Bytesize
              描述

              Socket 在用户空间的缓冲区大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • 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)
            默认值[]
            描述

            配置监听器的访问控制规则。 见:https://github.com/emqtt/esockd#allowdeny

        • dtls
          类型Map($name->Struct(dtls_listener))
          描述

          从监听器名称到配置参数的映射。

          dtls_listener

          • acceptors
            类型Integer
            默认值16
            描述

            Acceptor 进程池大小。

          • 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。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • sndbuf
              类型Bytesize
              描述

              Socket 在内核空间发送缓冲区的大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • buffer
              类型Bytesize
              描述

              Socket 在用户空间的缓冲区大小。
              表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

            • 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)
            默认值[]
            描述

            配置监听器的访问控制规则。 见:https://github.com/emqtt/esockd#allowdeny

          • 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
              描述

              SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

              SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

              在闲置一定时间后休眠 SSL 进程,减少其内存占用。
              表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • dhfile
              类型String
              描述

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

            • fail_if_no_peer_cert
              类型Boolean
              默认值false
              描述

              TLS/DTLS 服务器与 {verify,verify_peer} 一起使用。 如果设置为 true,则如果客户端没有要发送的证书,即发送空证书,服务器将失败。 如果设置为 false,则仅当客户端发送无效证书(空证书被视为有效证书)时才会失败。

            • honor_cipher_order
              类型Boolean
              默认值true
              描述

              一个重要的安全设置,它强制根据服务器指定的顺序而不是客户机指定的顺序设置密码,从而强制服务器管理员执行(通常配置得更正确)安全顺序。

            • client_renegotiation
              类型Boolean
              默认值true
              描述

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

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

              握手完成所允许的最长时间
              表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

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

                检查 OCSP 响应时,HTTP 请求的超时。
                表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

            • enable_crl_check
              类型Boolean
              默认值false
              描述

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

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该网关

      • enable_stats

        类型Boolean
        默认值true
        描述

        是否开启客户端统计

      • idle_timeout

        类型Duration
        默认值30s
        描述

        客户端连接过程的空闲时间。该配置用于:

        1. 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
        2. 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。
      • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

        • sndbuf
          类型Bytesize
          描述

          套接字的最小发送缓冲区大小
          表示字节数量的字符串,例如:10B640kb4MB1GB。单位以 1024 的幂次来解释,并且单位部分不区分大小写。

      • 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
      描述

      慢订阅统计的阈值
      表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • expire_interval

      类型Duration
      默认值300s
      描述

      慢订阅记录的有效时间
      表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • top_k_num

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

      慢订阅统计表的记录数量上限

    • stats_type

      类型Enum(whole,internal,response)
      默认值whole
      描述

      慢订阅的统计类型

  • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • 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 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

    • traces

      类型Struct(otel_traces)
      描述

      Open Telemetry 追踪配置。

      otel_traces

      • enable

        类型Boolean
        默认值false
        描述

        启用或禁用 open telemetry 指标

      • scheduled_delay

        类型Duration
        默认值5s
        描述

        两次连续导出 Open Telemetry 信号之间的延迟间隔。
        表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

      • 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
          描述

          SSL 参数重新协商是一种允许客户端和服务器动态重新协商 SSL 连接参数的功能。 RFC 5746 定义了一种更安全的方法。通过启用安全的重新协商,您就失去了对不安全的重新协商的支持,从而容易受到 MitM 攻击。

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

          SSL 握手的日志级别。默认值是 'notice',可以设置为 'debug' 用来调查 SSL 握手的问题。

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

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。
          表示时间持续的字符串,例如:10s2.5m1h30m1W2D2345ms,其中 ms 是最小单位。当指定精度时,可能会忽略更精细的时间部分:例如将 1200ms 用于 Duration(s) 相当于写 1s。单位部分不区分大小写。

        • 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