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

        Maximum connection rate.
        This is used to limit the connection rate for this listener, once the limit is reached, new connections will be deferred or refused

      • messages_rate

        类型String
        描述

        Messages publish rate.
        This is used to limit the inbound message numbers for each client connected to this listener, once the limit is reached, the restricted client will slow down and even be hung for a while.

      • bytes_rate

        类型String
        描述

        Data publish rate.
        This is used to limit the inbound bytes rate for each client connected to this listener, once the limit is reached, the restricted client will slow down and even be hung for a while.

      • 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

        类型String
        默认值3s
        描述

        代理协议超时。如果在超时时间内未收到代理协议数据包,EMQX将关闭TCP连接。

      • 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
          类型String
          默认值15s
          描述

          连接的 TCP 发送超时。

        • send_timeout_close
          类型Boolean
          默认值true
          描述

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

        • recbuf
          类型String
          描述

          连接的 TCP 接收缓冲区(OS 内核)。

        • sndbuf
          类型String
          描述

          连接的 TCP 发送缓冲区(OS 内核)。

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

          驱动程序使用的用户空间缓冲区的大小。

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

          当 VM 套接字实现内部排队的数据量达到此限制时,套接字将设置为忙碌状态。

        • nodelay
          类型Boolean
          默认值true
          描述

          连接的 TCP_NODELAY 标识

        • reuseaddr
          类型Boolean
          默认值true
          描述

          连接的 SO_REUSEADDR 标识。

        • keepalive
          类型String
          默认值none
          描述

          Enable TCP keepalive for MQTT connections over TCP or SSL. The value is three comma separated numbers in the format of 'Idle,Interval,Probes'

          • Idle: The number of seconds a connection needs to be idle before the server begins to send out keep-alive probes (Linux default 7200).
          • Interval: The number of seconds between TCP keep-alive probes (Linux default 75).
          • Probes: The maximum number of TCP keep-alive probes to send before giving up and killing the connection if no response is obtained from the other end (Linux default 9). For example "240,30,5" means: EMQX should start sending TCP keepalive probes after the connection is in idle for 240 seconds, and the probes are sent every 30 seconds until a response is received from the MQTT client, if it misses 5 consecutive responses, EMQX should close the connection. Default: '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
        描述

        Maximum connection rate.
        This is used to limit the connection rate for this listener, once the limit is reached, new connections will be deferred or refused

      • messages_rate

        类型String
        描述

        Messages publish rate.
        This is used to limit the inbound message numbers for each client connected to this listener, once the limit is reached, the restricted client will slow down and even be hung for a while.

      • bytes_rate

        类型String
        描述

        Data publish rate.
        This is used to limit the inbound bytes rate for each client connected to this listener, once the limit is reached, the restricted client will slow down and even be hung for a while.

      • 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

        类型String
        默认值3s
        描述

        代理协议超时。如果在超时时间内未收到代理协议数据包,EMQX将关闭TCP连接。

      • 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
          类型String
          默认值15s
          描述

          连接的 TCP 发送超时。

        • send_timeout_close
          类型Boolean
          默认值true
          描述

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

        • recbuf
          类型String
          描述

          连接的 TCP 接收缓冲区(OS 内核)。

        • sndbuf
          类型String
          描述

          连接的 TCP 发送缓冲区(OS 内核)。

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

          驱动程序使用的用户空间缓冲区的大小。

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

          当 VM 套接字实现内部排队的数据量达到此限制时,套接字将设置为忙碌状态。

        • nodelay
          类型Boolean
          默认值true
          描述

          连接的 TCP_NODELAY 标识

        • reuseaddr
          类型Boolean
          默认值true
          描述

          连接的 SO_REUSEADDR 标识。

        • keepalive
          类型String
          默认值none
          描述

          Enable TCP keepalive for MQTT connections over TCP or SSL. The value is three comma separated numbers in the format of 'Idle,Interval,Probes'

          • Idle: The number of seconds a connection needs to be idle before the server begins to send out keep-alive probes (Linux default 7200).
          • Interval: The number of seconds between TCP keep-alive probes (Linux default 75).
          • Probes: The maximum number of TCP keep-alive probes to send before giving up and killing the connection if no response is obtained from the other end (Linux default 9). For example "240,30,5" means: EMQX should start sending TCP keepalive probes after the connection is in idle for 240 seconds, and the probes are sent every 30 seconds until a response is received from the MQTT client, if it misses 5 consecutive responses, EMQX should close the connection. Default: '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
          类型String
          默认值5s
          描述

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。

        • 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
          类型String
          默认值15s
          描述

          握手完成所允许的最长时间

        • 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
            类型String
            默认值5m
            描述

            为服务器刷新OCSP响应的周期。

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

            检查 OCSP 响应时,HTTP 请求的超时。

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

        Maximum connection rate.
        This is used to limit the connection rate for this listener, once the limit is reached, new connections will be deferred or refused

      • messages_rate

        类型String
        描述

        Messages publish rate.
        This is used to limit the inbound message numbers for each client connected to this listener, once the limit is reached, the restricted client will slow down and even be hung for a while.

      • bytes_rate

        类型String
        描述

        Data publish rate.
        This is used to limit the inbound bytes rate for each client connected to this listener, once the limit is reached, the restricted client will slow down and even be hung for a while.

      • 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

        类型String
        默认值3s
        描述

        代理协议超时。如果在超时时间内未收到代理协议数据包,EMQX将关闭TCP连接。

      • 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
          类型String
          默认值15s
          描述

          连接的 TCP 发送超时。

        • send_timeout_close
          类型Boolean
          默认值true
          描述

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

        • recbuf
          类型String
          描述

          连接的 TCP 接收缓冲区(OS 内核)。

        • sndbuf
          类型String
          描述

          连接的 TCP 发送缓冲区(OS 内核)。

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

          驱动程序使用的用户空间缓冲区的大小。

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

          当 VM 套接字实现内部排队的数据量达到此限制时,套接字将设置为忙碌状态。

        • nodelay
          类型Boolean
          默认值true
          描述

          连接的 TCP_NODELAY 标识

        • reuseaddr
          类型Boolean
          默认值true
          描述

          连接的 SO_REUSEADDR 标识。

        • keepalive
          类型String
          默认值none
          描述

          Enable TCP keepalive for MQTT connections over TCP or SSL. The value is three comma separated numbers in the format of 'Idle,Interval,Probes'

          • Idle: The number of seconds a connection needs to be idle before the server begins to send out keep-alive probes (Linux default 7200).
          • Interval: The number of seconds between TCP keep-alive probes (Linux default 75).
          • Probes: The maximum number of TCP keep-alive probes to send before giving up and killing the connection if no response is obtained from the other end (Linux default 9). For example "240,30,5" means: EMQX should start sending TCP keepalive probes after the connection is in idle for 240 seconds, and the probes are sent every 30 seconds until a response is received from the MQTT client, if it misses 5 consecutive responses, EMQX should close the connection. Default: '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
          类型String
          默认值7200s
          描述

          关闭在此间隔内未发送 MQTT CONNECT 消息的客户端的传输层连接。

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

          If false and check_origin_enable is true, the server will reject requests that don't have origin HTTP header.

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

        Maximum connection rate.
        This is used to limit the connection rate for this listener, once the limit is reached, new connections will be deferred or refused

      • messages_rate

        类型String
        描述

        Messages publish rate.
        This is used to limit the inbound message numbers for each client connected to this listener, once the limit is reached, the restricted client will slow down and even be hung for a while.

      • bytes_rate

        类型String
        描述

        Data publish rate.
        This is used to limit the inbound bytes rate for each client connected to this listener, once the limit is reached, the restricted client will slow down and even be hung for a while.

      • 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

        类型String
        默认值3s
        描述

        代理协议超时。如果在超时时间内未收到代理协议数据包,EMQX将关闭TCP连接。

      • 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
          类型String
          默认值15s
          描述

          连接的 TCP 发送超时。

        • send_timeout_close
          类型Boolean
          默认值true
          描述

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

        • recbuf
          类型String
          描述

          连接的 TCP 接收缓冲区(OS 内核)。

        • sndbuf
          类型String
          描述

          连接的 TCP 发送缓冲区(OS 内核)。

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

          驱动程序使用的用户空间缓冲区的大小。

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

          当 VM 套接字实现内部排队的数据量达到此限制时,套接字将设置为忙碌状态。

        • nodelay
          类型Boolean
          默认值true
          描述

          连接的 TCP_NODELAY 标识

        • reuseaddr
          类型Boolean
          默认值true
          描述

          连接的 SO_REUSEADDR 标识。

        • keepalive
          类型String
          默认值none
          描述

          Enable TCP keepalive for MQTT connections over TCP or SSL. The value is three comma separated numbers in the format of 'Idle,Interval,Probes'

          • Idle: The number of seconds a connection needs to be idle before the server begins to send out keep-alive probes (Linux default 7200).
          • Interval: The number of seconds between TCP keep-alive probes (Linux default 75).
          • Probes: The maximum number of TCP keep-alive probes to send before giving up and killing the connection if no response is obtained from the other end (Linux default 9). For example "240,30,5" means: EMQX should start sending TCP keepalive probes after the connection is in idle for 240 seconds, and the probes are sent every 30 seconds until a response is received from the MQTT client, if it misses 5 consecutive responses, EMQX should close the connection. Default: '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
          类型String
          默认值5s
          描述

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。

        • 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
          类型String
          默认值15s
          描述

          握手完成所允许的最长时间

      • 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
          类型String
          默认值7200s
          描述

          关闭在此间隔内未发送 MQTT CONNECT 消息的客户端的传输层连接。

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

          If false and check_origin_enable is true, the server will reject requests that don't have origin HTTP header.

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

        Maximum connection rate.
        This is used to limit the connection rate for this listener, once the limit is reached, new connections will be deferred or refused

      • messages_rate

        类型String
        描述

        Messages publish rate.
        This is used to limit the inbound message numbers for each client connected to this listener, once the limit is reached, the restricted client will slow down and even be hung for a while.

      • bytes_rate

        类型String
        描述

        Data publish rate.
        This is used to limit the inbound bytes rate for each client connected to this listener, once the limit is reached, the restricted client will slow down and even be hung for a while.

  • mqtt

    类型Struct(mqtt)
    描述

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

    mqtt

    • idle_timeout

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

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

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

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

    • max_packet_size

      类型String
      默认值1MB
      描述

      允许的最大 MQTT 报文大小。

    • 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 策略派发;
      • 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 * Backoff * 2

    • retry_interval

      类型String
      默认值30s
      描述

      QoS 1/2 消息的重新投递间隔。

    • 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

      类型String
      默认值2h
      描述

      指定会话将在连接断开后多久过期,仅适用于非 MQTT 5.0 的连接。

    • 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

      类型String
      默认值300s
      描述

      客户端发布 QoS 2 消息时,服务器等待 PUBREL 的最长时延。超过该时长后服务器会放弃等待,该PACKET ID 会被释放,从而允许后续新的 PUBLISH 消息使用。如果超时后收到 PUBREL,服务器将会产生一条告警日志。注意,向订阅客户端转发消息的动作发生在进入等待之前。

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

    Default authentication configs for all MQTT listeners.

    For per-listener overrides see authentication in listener configs

    This option can be configured with:

    • []: The default value, it allows *ALL* logins
    • one: For example {enable:true,backend:"built_in_database",mechanism="password_based"}
    • chain: An array of structs.

    When a chain is configured, the login credentials are checked against the backends per the configured order, until an 'allow' or 'deny' decision can be made.

    If there is no decision after a full chain exhaustion, the login is rejected.

    builtin_db

    • mechanism

      类型String("password_based")
      描述

      认证机制。

    • backend

      类型String("built_in_database")
      描述

      后端类型。

    • user_id_type

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

      指定使用客户端ID clientid 还是用户名 username 进行认证。

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

        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 以启用或禁用此认证数据源。

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

        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

      类型String
      默认值5s
      描述

      SQL 查询的超时时间。

    • enable

      类型Boolean
      默认值true
      描述

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

    • server

      类型String
      描述

      The IPv4 or IPv6 address or the hostname to connect to.
      A host entry has the following form: Host[:Port].
      The MySQL default port 3306 is used if [:Port] is not specified.

    • database

      类型String
      描述

      数据库名字。

    • pool_size

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

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

    • username

      类型String
      默认值root
      描述

      内部数据库的用户名。

    • password

      类型String
      描述

      内部数据库密码。

    • 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

        类型String
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。

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

        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

      类型String
      描述

      内部数据库密码。

    • 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

        类型String
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。

      • 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}: 将在运行时被替换为客户端连接时使用的客户端标识符
    • 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
        描述

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

      Standalone 模式。当 MongoDB 服务运行在 standalone 模式下,该配置必须设置为 'single'。

    • server

      类型String
      描述

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

    • w_mode

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

      写模式。

    • srv_record

      类型Boolean
      默认值false
      描述

      使用 DNS SRV 记录。

    • pool_size

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

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

    • username

      类型String
      描述

      内部数据库的用户名。

    • password

      类型String
      描述

      内部数据库密码。

    • use_legacy_protocol

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

      Whether to use MongoDB's legacy protocol for communicating with the database. The default is to attempt to automatically determine if the newer protocol is supported.

    • auth_source

      类型String
      描述

      与用户证书关联的数据库名称。

    • database

      类型String
      描述

      数据库名字。

    • topology

      类型Struct(topology)

      topology

      • max_overflow

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

        最大溢出。

      • overflow_ttl

        类型String
        描述

        当池内工人太多时,等待多久清除多余工人。

      • overflow_check_period

        类型String
        描述

        检查是否有超过配置的工人的周期("溢出")。

      • local_threshold_ms

        类型String
        描述

        在多个合适的MongoDB实例中进行选择的延迟窗口的大小。

      • connect_timeout_ms

        类型String
        描述

        超时重连的等待时间。

      • socket_timeout_ms

        类型String
        描述

        在尝试超时之前,在套接字上尝试发送或接收的持续时间。

      • server_selection_timeout_ms

        类型String
        描述

        指定在抛出异常之前为服务器选择阻断多长时间。

      • wait_queue_timeout_ms

        类型String
        描述

        工作者等待连接可用的最长时间。

      • heartbeat_frequency_ms

        类型String
        默认值200s
        描述

        控制驱动程序何时检查MongoDB部署的状态。指定检查的间隔时间,从上一次检查结束到下一次检查开始计算。如果连接数增加(例如,如果你增加池子的大小,就会发生这种情况),你可能也需要增加这个周期,以避免在MongoDB日志文件中创建太多的日志条目。

      • min_heartbeat_frequency_ms

        类型String
        描述

        心跳间的最小间隙

    • 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

        类型String
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。

      • 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}: 将在运行时被替换为客户端连接时使用的客户端标识符
    • 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
        描述

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

      Replica set模式。当 MongoDB 服务运行在 replica-set 模式下,该配置必须设置为 'rs'。

    • servers

      类型String
      描述

      集群将要连接的节点列表。 节点之间用逗号分隔,如:Node[,Node]. 每个节点的配置为:将要连接的 IPv4 或 IPv6 地址或主机名。 主机名具有以下形式:Host[:Port]。 如果未指定 [:Port],则使用 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

      类型String
      描述

      内部数据库密码。

    • use_legacy_protocol

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

      Whether to use MongoDB's legacy protocol for communicating with the database. The default is to attempt to automatically determine if the newer protocol is supported.

    • auth_source

      类型String
      描述

      与用户证书关联的数据库名称。

    • database

      类型String
      描述

      数据库名字。

    • topology

      类型Struct(topology)

      topology

      • max_overflow

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

        最大溢出。

      • overflow_ttl

        类型String
        描述

        当池内工人太多时,等待多久清除多余工人。

      • overflow_check_period

        类型String
        描述

        检查是否有超过配置的工人的周期("溢出")。

      • local_threshold_ms

        类型String
        描述

        在多个合适的MongoDB实例中进行选择的延迟窗口的大小。

      • connect_timeout_ms

        类型String
        描述

        超时重连的等待时间。

      • socket_timeout_ms

        类型String
        描述

        在尝试超时之前,在套接字上尝试发送或接收的持续时间。

      • server_selection_timeout_ms

        类型String
        描述

        指定在抛出异常之前为服务器选择阻断多长时间。

      • wait_queue_timeout_ms

        类型String
        描述

        工作者等待连接可用的最长时间。

      • heartbeat_frequency_ms

        类型String
        默认值200s
        描述

        控制驱动程序何时检查MongoDB部署的状态。指定检查的间隔时间,从上一次检查结束到下一次检查开始计算。如果连接数增加(例如,如果你增加池子的大小,就会发生这种情况),你可能也需要增加这个周期,以避免在MongoDB日志文件中创建太多的日志条目。

      • min_heartbeat_frequency_ms

        类型String
        描述

        心跳间的最小间隙

    • 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

        类型String
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。

      • 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}: 将在运行时被替换为客户端连接时使用的客户端标识符
    • 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
        描述

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

      Sharded cluster模式。当 MongoDB 服务运行在 sharded 模式下,该配置必须设置为 'sharded'。

    • servers

      类型String
      描述

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

    • w_mode

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

      写模式。

    • srv_record

      类型Boolean
      默认值false
      描述

      使用 DNS SRV 记录。

    • pool_size

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

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

    • username

      类型String
      描述

      内部数据库的用户名。

    • password

      类型String
      描述

      内部数据库密码。

    • use_legacy_protocol

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

      Whether to use MongoDB's legacy protocol for communicating with the database. The default is to attempt to automatically determine if the newer protocol is supported.

    • auth_source

      类型String
      描述

      与用户证书关联的数据库名称。

    • database

      类型String
      描述

      数据库名字。

    • topology

      类型Struct(topology)

      topology

      • max_overflow

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

        最大溢出。

      • overflow_ttl

        类型String
        描述

        当池内工人太多时,等待多久清除多余工人。

      • overflow_check_period

        类型String
        描述

        检查是否有超过配置的工人的周期("溢出")。

      • local_threshold_ms

        类型String
        描述

        在多个合适的MongoDB实例中进行选择的延迟窗口的大小。

      • connect_timeout_ms

        类型String
        描述

        超时重连的等待时间。

      • socket_timeout_ms

        类型String
        描述

        在尝试超时之前,在套接字上尝试发送或接收的持续时间。

      • server_selection_timeout_ms

        类型String
        描述

        指定在抛出异常之前为服务器选择阻断多长时间。

      • wait_queue_timeout_ms

        类型String
        描述

        工作者等待连接可用的最长时间。

      • heartbeat_frequency_ms

        类型String
        默认值200s
        描述

        控制驱动程序何时检查MongoDB部署的状态。指定检查的间隔时间,从上一次检查结束到下一次检查开始计算。如果连接数增加(例如,如果你增加池子的大小,就会发生这种情况),你可能也需要增加这个周期,以避免在MongoDB日志文件中创建太多的日志条目。

      • min_heartbeat_frequency_ms

        类型String
        描述

        心跳间的最小间隙

    • 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

        类型String
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。

      • 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 Command,目前仅支持 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
        描述

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

      单机模式。当 Redis 服务运行在单机模式下,该配置必须设置为 'single'。

    • pool_size

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

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

    • username

      类型String
      描述

      内部数据库的用户名。

    • password

      类型String
      描述

      内部数据库密码。

    • 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

        类型String
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。

      • 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 Command,目前仅支持 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
        描述

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

      集群模式。当 Redis 服务运行在集群模式下,该配置必须设置为 'cluster'。

    • pool_size

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

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

    • username

      类型String
      描述

      内部数据库的用户名。

    • password

      类型String
      描述

      内部数据库密码。

    • 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

        类型String
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。

      • 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 Command,目前仅支持 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
        描述

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

      哨兵模式。当 Redis 服务运行在哨兵模式下,该配置必须设置为 'sentinel'。

    • sentinel

      类型String
      描述

      Redis 哨兵模式下的集群名称。

    • pool_size

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

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

    • username

      类型String
      描述

      内部数据库的用户名。

    • password

      类型String
      描述

      内部数据库密码。

    • 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

        类型String
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。

      • 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 body,JSON 字符模板,支持使用占位符。 使用 GET 请求时,将被转换为 URL Query。 使用 POST 请求时,转换格式将取决于 content-type 头被设置为 application/json 还是 application/x-www-form-urlencoded。

    • request_timeout

      类型String
      默认值5s
      描述

      HTTP 请求超时时长。

    • enable

      类型Boolean
      默认值true
      描述

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

    • connect_timeout

      类型String
      默认值15s
      描述

      The timeout when connecting to the HTTP server.

    • enable_pipelining

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

      A positive integer. Whether to send HTTP requests continuously, when set to 1, it means that after each HTTP request is sent, you need to wait for the server to return and then continue to send the next request.

    • max_retries

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

      Deprecated since 5.0.4.

    • pool_size

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

      The pool size.

    • request

      类型Struct(request)
      描述

      Configure HTTP request parameters.

      request

      • method

        类型String
        描述

        HTTP method.

      • path

        类型String
        描述

        URL path.

      • body

        类型String
        描述

        HTTP request body.

      • headers

        类型Map
        描述

        List of HTTP headers.

      • max_retries

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

        Max retry times if error on sending request.

      • request_timeout

        类型String
        描述

        HTTP request timeout.

    • retry_interval

      类型String
      描述

      Deprecated since 5.0.4.

    • 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

        类型String
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。

      • enable

        类型Boolean
        默认值false
        描述

        启用 TLS。

      • server_name_indication

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

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

    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 body,JSON 字符模板,支持使用占位符。 使用 GET 请求时,将被转换为 URL Query。 使用 POST 请求时,转换格式将取决于 content-type 头被设置为 application/json 还是 application/x-www-form-urlencoded。

    • request_timeout

      类型String
      默认值5s
      描述

      HTTP 请求超时时长。

    • enable

      类型Boolean
      默认值true
      描述

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

    • connect_timeout

      类型String
      默认值15s
      描述

      The timeout when connecting to the HTTP server.

    • enable_pipelining

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

      A positive integer. Whether to send HTTP requests continuously, when set to 1, it means that after each HTTP request is sent, you need to wait for the server to return and then continue to send the next request.

    • max_retries

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

      Deprecated since 5.0.4.

    • pool_size

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

      The pool size.

    • request

      类型Struct(request)
      描述

      Configure HTTP request parameters.

      request

      • method

        类型String
        描述

        HTTP method.

      • path

        类型String
        描述

        URL path.

      • body

        类型String
        描述

        HTTP request body.

      • headers

        类型Map
        描述

        List of HTTP headers.

      • max_retries

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

        Max retry times if error on sending request.

      • request_timeout

        类型String
        描述

        HTTP request timeout.

    • retry_interval

      类型String
      描述

      Deprecated since 5.0.4.

    • 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

        类型String
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。

      • enable

        类型Boolean
        默认值false
        描述

        启用 TLS。

      • server_name_indication

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

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

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

      JWT claim name to use for getting ACL rules.

    • verify_claims

      类型Map
      默认值[]
      描述

      需要验证的自定义声明列表,它是一个名称/值对列表。 值可以使用以下占位符:

      • ${username}: 将在运行时被替换为客户端连接时使用的用户名
      • ${clientid}: 将在运行时被替换为客户端连接时使用的客户端标识符 认证时将验证 JWT(取自 Password 字段)中 claims 的值是否与 verify_claims 中要求的相匹配。
    • from

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

      指定客户端连接请求中 JWT 的位置;可选值: password、 username(分别对应于 MQTT 客户端 CONNECT 报文中的 Password 和 Username 字段)

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

      JWT claim name to use for getting ACL rules.

    • verify_claims

      类型Map
      默认值[]
      描述

      需要验证的自定义声明列表,它是一个名称/值对列表。 值可以使用以下占位符:

      • ${username}: 将在运行时被替换为客户端连接时使用的用户名
      • ${clientid}: 将在运行时被替换为客户端连接时使用的客户端标识符 认证时将验证 JWT(取自 Password 字段)中 claims 的值是否与 verify_claims 中要求的相匹配。
    • from

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

      指定客户端连接请求中 JWT 的位置;可选值: password、 username(分别对应于 MQTT 客户端 CONNECT 报文中的 Password 和 Username 字段)

    • 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

        类型String
        默认值5s
        描述

        在闲置一定时间后休眠 SSL 进程,减少其内存占用。

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

      JWT claim name to use for getting ACL rules.

    • verify_claims

      类型Map
      默认值[]
      描述

      需要验证的自定义声明列表,它是一个名称/值对列表。 值可以使用以下占位符:

      • ${username}: 将在运行时被替换为客户端连接时使用的用户名
      • ${clientid}: 将在运行时被替换为客户端连接时使用的客户端标识符 认证时将验证 JWT(取自 Password 字段)中 claims 的值是否与 verify_claims 中要求的相匹配。
    • from

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

      指定客户端连接请求中 JWT 的位置;可选值: password、 username(分别对应于 MQTT 客户端 CONNECT 报文中的 Password 和 Username 字段)

    • 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 以启用或禁用此认证数据源。

  • 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

        类型String
        默认值1m
        描述

        缓存数据的生存时间。

    • sources

      类型Array(OneOf(Struct(file),Struct(http_get),Struct(http_post),Struct(builtin_db),Struct(mongo_single),Struct(mongo_rs),Struct(mongo_sharded),Struct(mysql),Struct(postgresql),Struct(redis_single),Struct(redis_sentinel),Struct(redis_cluster)))
      默认值[ { enable = true path = "${EMQX_ETC_DIR}/acl.conf" type = file } ]
      描述

      授权数据源。
      授权(ACL)数据源的列表。 它被设计为一个数组,而不是一个散列映射, 所以可以作为链式访问控制。

      当授权一个 'publish' 或 'subscribe' 行为时, 该配置列表中的所有数据源将按顺序进行检查。 如果在某个客户端未找到时(使用 ClientID 或 Username)。 将会移动到下一个数据源。直至得到 'allow' 或 'deny' 的结果。

      如果在任何数据源中都未找到对应的客户端信息。 配置的默认行为 ('authorization.no_match') 将生效。

      注意: 数据源使用 'type' 进行标识。 使用同一类型的数据源多于一次不被允许。

      file

      • type

        类型String("file")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设为 truefalse 以启用或禁用此访问控制数据源

      • path

        类型String
        描述

        包含 ACL 规则的文件路径。 如果在启动 EMQX 节点前预先配置该路径, 那么可以将该文件置于任何 EMQX 可以访问到的位置。

        如果从 EMQX Dashboard 或 HTTP API 创建或修改了规则集, 那么EMQX将会生成一个新的文件并将它存放在 data_dir 下的 authz 子目录中, 并从此弃用旧的文件。

      http_get

      • type

        类型String("http")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设为 truefalse 以启用或禁用此访问控制数据源

      • url

        类型String
        描述

        授权 HTTP 服务器地址。

      • request_timeout

        类型String
        默认值30s
        描述

        HTTP 请求超时时长。

      • body

        类型Map
        描述

        HTTP request body。

      • connect_timeout

        类型String
        默认值15s
        描述

        The timeout when connecting to the HTTP server.

      • enable_pipelining

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

        A positive integer. Whether to send HTTP requests continuously, when set to 1, it means that after each HTTP request is sent, you need to wait for the server to return and then continue to send the next request.

      • max_retries

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

        Deprecated since 5.0.4.

      • pool_size

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

        The pool size.

      • request

        类型Struct(request)
        描述

        Configure HTTP request parameters.

        request

        • method
          类型String
          描述

          HTTP method.

        • path
          类型String
          描述

          URL path.

        • body
          类型String
          描述

          HTTP request body.

        • headers
          类型Map
          描述

          List of HTTP headers.

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

          Max retry times if error on sending request.

        • request_timeout
          类型String
          描述

          HTTP request timeout.

      • retry_interval

        类型String
        描述

        Deprecated since 5.0.4.

      • 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
          类型String
          默认值5s
          描述

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。

        • 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 以启用或禁用此访问控制数据源

      • url

        类型String
        描述

        授权 HTTP 服务器地址。

      • request_timeout

        类型String
        默认值30s
        描述

        HTTP 请求超时时长。

      • body

        类型Map
        描述

        HTTP request body。

      • connect_timeout

        类型String
        默认值15s
        描述

        The timeout when connecting to the HTTP server.

      • enable_pipelining

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

        A positive integer. Whether to send HTTP requests continuously, when set to 1, it means that after each HTTP request is sent, you need to wait for the server to return and then continue to send the next request.

      • max_retries

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

        Deprecated since 5.0.4.

      • pool_size

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

        The pool size.

      • request

        类型Struct(request)
        描述

        Configure HTTP request parameters.

        request

        • method
          类型String
          描述

          HTTP method.

        • path
          类型String
          描述

          URL path.

        • body
          类型String
          描述

          HTTP request body.

        • headers
          类型Map
          描述

          List of HTTP headers.

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

          Max retry times if error on sending request.

        • request_timeout
          类型String
          描述

          HTTP request timeout.

      • retry_interval

        类型String
        描述

        Deprecated since 5.0.4.

      • 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
          类型String
          默认值5s
          描述

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。

        • 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 列表

      builtin_db

      • type

        类型String("built_in_database")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设为 truefalse 以启用或禁用此访问控制数据源

      mongo_single

      • type

        类型String("mongodb")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设为 truefalse 以启用或禁用此访问控制数据源

      • collection

        类型String
        描述

        MongoDB 授权数据集。

      • filter

        类型Map
        默认值{}
        描述

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

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

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

        Standalone 模式。当 MongoDB 服务运行在 standalone 模式下,该配置必须设置为 'single'。

      • server

        类型String
        描述

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

      • w_mode

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

        写模式。

      • srv_record

        类型Boolean
        默认值false
        描述

        使用 DNS SRV 记录。

      • pool_size

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

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

      • username

        类型String
        描述

        内部数据库的用户名。

      • password

        类型String
        描述

        内部数据库密码。

      • use_legacy_protocol

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

        Whether to use MongoDB's legacy protocol for communicating with the database. The default is to attempt to automatically determine if the newer protocol is supported.

      • auth_source

        类型String
        描述

        与用户证书关联的数据库名称。

      • database

        类型String
        描述

        数据库名字。

      • topology

        类型Struct(topology)

        topology

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

          最大溢出。

        • overflow_ttl
          类型String
          描述

          当池内工人太多时,等待多久清除多余工人。

        • overflow_check_period
          类型String
          描述

          检查是否有超过配置的工人的周期("溢出")。

        • local_threshold_ms
          类型String
          描述

          在多个合适的MongoDB实例中进行选择的延迟窗口的大小。

        • connect_timeout_ms
          类型String
          描述

          超时重连的等待时间。

        • socket_timeout_ms
          类型String
          描述

          在尝试超时之前,在套接字上尝试发送或接收的持续时间。

        • server_selection_timeout_ms
          类型String
          描述

          指定在抛出异常之前为服务器选择阻断多长时间。

        • wait_queue_timeout_ms
          类型String
          描述

          工作者等待连接可用的最长时间。

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

          控制驱动程序何时检查MongoDB部署的状态。指定检查的间隔时间,从上一次检查结束到下一次检查开始计算。如果连接数增加(例如,如果你增加池子的大小,就会发生这种情况),你可能也需要增加这个周期,以避免在MongoDB日志文件中创建太多的日志条目。

        • min_heartbeat_frequency_ms
          类型String
          描述

          心跳间的最小间隙

      • 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
          类型String
          默认值5s
          描述

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。

        • 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 以启用或禁用此访问控制数据源

      • collection

        类型String
        描述

        MongoDB 授权数据集。

      • filter

        类型Map
        默认值{}
        描述

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

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

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

        Replica set模式。当 MongoDB 服务运行在 replica-set 模式下,该配置必须设置为 'rs'。

      • servers

        类型String
        描述

        集群将要连接的节点列表。 节点之间用逗号分隔,如:Node[,Node]. 每个节点的配置为:将要连接的 IPv4 或 IPv6 地址或主机名。 主机名具有以下形式:Host[:Port]。 如果未指定 [:Port],则使用 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

        类型String
        描述

        内部数据库密码。

      • use_legacy_protocol

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

        Whether to use MongoDB's legacy protocol for communicating with the database. The default is to attempt to automatically determine if the newer protocol is supported.

      • auth_source

        类型String
        描述

        与用户证书关联的数据库名称。

      • database

        类型String
        描述

        数据库名字。

      • topology

        类型Struct(topology)

        topology

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

          最大溢出。

        • overflow_ttl
          类型String
          描述

          当池内工人太多时,等待多久清除多余工人。

        • overflow_check_period
          类型String
          描述

          检查是否有超过配置的工人的周期("溢出")。

        • local_threshold_ms
          类型String
          描述

          在多个合适的MongoDB实例中进行选择的延迟窗口的大小。

        • connect_timeout_ms
          类型String
          描述

          超时重连的等待时间。

        • socket_timeout_ms
          类型String
          描述

          在尝试超时之前,在套接字上尝试发送或接收的持续时间。

        • server_selection_timeout_ms
          类型String
          描述

          指定在抛出异常之前为服务器选择阻断多长时间。

        • wait_queue_timeout_ms
          类型String
          描述

          工作者等待连接可用的最长时间。

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

          控制驱动程序何时检查MongoDB部署的状态。指定检查的间隔时间,从上一次检查结束到下一次检查开始计算。如果连接数增加(例如,如果你增加池子的大小,就会发生这种情况),你可能也需要增加这个周期,以避免在MongoDB日志文件中创建太多的日志条目。

        • min_heartbeat_frequency_ms
          类型String
          描述

          心跳间的最小间隙

      • 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
          类型String
          默认值5s
          描述

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。

        • 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 以启用或禁用此访问控制数据源

      • collection

        类型String
        描述

        MongoDB 授权数据集。

      • filter

        类型Map
        默认值{}
        描述

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

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

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

        Sharded cluster模式。当 MongoDB 服务运行在 sharded 模式下,该配置必须设置为 'sharded'。

      • servers

        类型String
        描述

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

      • w_mode

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

        写模式。

      • srv_record

        类型Boolean
        默认值false
        描述

        使用 DNS SRV 记录。

      • pool_size

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

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

      • username

        类型String
        描述

        内部数据库的用户名。

      • password

        类型String
        描述

        内部数据库密码。

      • use_legacy_protocol

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

        Whether to use MongoDB's legacy protocol for communicating with the database. The default is to attempt to automatically determine if the newer protocol is supported.

      • auth_source

        类型String
        描述

        与用户证书关联的数据库名称。

      • database

        类型String
        描述

        数据库名字。

      • topology

        类型Struct(topology)

        topology

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

          最大溢出。

        • overflow_ttl
          类型String
          描述

          当池内工人太多时,等待多久清除多余工人。

        • overflow_check_period
          类型String
          描述

          检查是否有超过配置的工人的周期("溢出")。

        • local_threshold_ms
          类型String
          描述

          在多个合适的MongoDB实例中进行选择的延迟窗口的大小。

        • connect_timeout_ms
          类型String
          描述

          超时重连的等待时间。

        • socket_timeout_ms
          类型String
          描述

          在尝试超时之前,在套接字上尝试发送或接收的持续时间。

        • server_selection_timeout_ms
          类型String
          描述

          指定在抛出异常之前为服务器选择阻断多长时间。

        • wait_queue_timeout_ms
          类型String
          描述

          工作者等待连接可用的最长时间。

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

          控制驱动程序何时检查MongoDB部署的状态。指定检查的间隔时间,从上一次检查结束到下一次检查开始计算。如果连接数增加(例如,如果你增加池子的大小,就会发生这种情况),你可能也需要增加这个周期,以避免在MongoDB日志文件中创建太多的日志条目。

        • min_heartbeat_frequency_ms
          类型String
          描述

          心跳间的最小间隙

      • 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
          类型String
          默认值5s
          描述

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

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

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

      mysql

      • type

        类型String("mysql")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设为 truefalse 以启用或禁用此访问控制数据源

      • server

        类型String
        描述

        The IPv4 or IPv6 address or the hostname to connect to.
        A host entry has the following form: Host[:Port].
        The MySQL default port 3306 is used if [:Port] is not specified.

      • database

        类型String
        描述

        数据库名字。

      • pool_size

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

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

      • username

        类型String
        默认值root
        描述

        内部数据库的用户名。

      • password

        类型String
        描述

        内部数据库密码。

      • 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
          类型String
          默认值5s
          描述

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。

        • 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 以启用或禁用此访问控制数据源

      • server

        类型String
        描述

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

      • database

        类型String
        描述

        数据库名字。

      • pool_size

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

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

      • username

        类型String
        描述

        内部数据库的用户名。

      • password

        类型String
        描述

        内部数据库密码。

      • 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
          类型String
          默认值5s
          描述

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。

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

        访问控制数据查询语句/查询命令。

      redis_single

      • type

        类型String("redis")
        描述

        数据后端类型

      • enable

        类型Boolean
        默认值true
        描述

        设为 truefalse 以启用或禁用此访问控制数据源

      • server

        类型String
        描述

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

      • redis_type

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

        单机模式。当 Redis 服务运行在单机模式下,该配置必须设置为 'single'。

      • pool_size

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

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

      • username

        类型String
        描述

        内部数据库的用户名。

      • password

        类型String
        描述

        内部数据库密码。

      • 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
          类型String
          默认值5s
          描述

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。

        • 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 以启用或禁用此访问控制数据源

      • servers

        类型String
        描述

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

      • redis_type

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

        哨兵模式。当 Redis 服务运行在哨兵模式下,该配置必须设置为 'sentinel'。

      • sentinel

        类型String
        描述

        Redis 哨兵模式下的集群名称。

      • pool_size

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

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

      • username

        类型String
        描述

        内部数据库的用户名。

      • password

        类型String
        描述

        内部数据库密码。

      • 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
          类型String
          默认值5s
          描述

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。

        • 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 以启用或禁用此访问控制数据源

      • servers

        类型String
        描述

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

      • redis_type

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

        集群模式。当 Redis 服务运行在集群模式下,该配置必须设置为 'cluster'。

      • pool_size

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

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

      • username

        类型String
        描述

        内部数据库的用户名。

      • password

        类型String
        描述

        内部数据库密码。

      • 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
          类型String
          默认值5s
          描述

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

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

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

      • cmd

        类型String
        描述

        访问控制数据查查询命令

  • 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"),String)
      默认值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,mcast)
      默认值manual
      描述

      集群节点发现方式。可选值为:

      • manual: 使用 emqx ctl cluster 命令管理集群。
      • static: 配置静态节点。配置几个固定的节点,新节点通过连接固定节点中的某一个来加入集群。
      • dns: 使用 DNS A 记录的方式发现节点。
      • etcd: 使用 etcd 发现节点。
      • k8s: 使用 Kubernetes API 发现节点。
    • autoclean

      类型String
      默认值24h
      描述

      指定多久之后从集群中删除离线节点。

    • autoheal

      类型Boolean
      默认值true
      描述

      集群脑裂自动恢复机制开关。

    • proto_dist

      类型Enum(inet_tcp,inet6_tcp,inet_tls)
      默认值inet_tcp
      描述

      分布式 Erlang 集群协议类型。可选值为:

      • inet_tcp: 使用 IPv4
      • inet_tls: 使用 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

        类型String
        默认值1m
        描述

        指定 etcd 中节点信息的过期时间。 当 cluster.discovery_strategy 为 etcd 时,此配置项才有效。

      • 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
          类型String
          默认值5s
          描述

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。

        • 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(emergency,alert,critical,error,warning,notice,info,debug,none,all)
        默认值warning
        描述

        当前日志处理进程的日志级别。 默认为 warning 级别。

      • enable

        类型Boolean
        默认值false
        描述

        启用此日志处理进程。

      • formatter

        类型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"),String)
        默认值50MB
        描述

        此参数控制日志文件轮换。 infinity 意味着日志文件将无限增长,否则日志文件将在达到 max_size(以字节为单位)时进行轮换。 与 rotation count配合使用。如果 counter 为 10,则是10个文件轮换。

      • level

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

        当前日志处理进程的日志级别。 默认为 warning 级别。

      • enable

        类型Boolean
        默认值true
        描述

        启用此日志处理进程。

      • formatter

        类型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"),String)
        默认值50MB
        描述

        此参数控制日志文件轮换。 infinity 意味着日志文件将无限增长,否则日志文件将在达到 max_size(以字节为单位)时进行轮换。 与 rotation count配合使用。如果 counter 为 10,则是10个文件轮换。

      • level

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

        当前日志处理进程的日志级别。 默认为 warning 级别。

      • enable

        类型Boolean
        默认值true
        描述

        启用此日志处理进程。

      • formatter

        类型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

      类型String
      默认值5s
      描述

      建立 RPC 连接的超时时间。

    • certfile

      类型String
      描述

      TLS 证书文件的路径,用于验证集群节点的身份。 只有当 rpc.driver 设置为 ssl 时,此配置才会生效。

    • keyfile

      类型String
      描述

      rpc.certfile 的私钥文件的路径。
      注意:此文件内容是私钥,所以需要设置权限为 600。

    • cacertfile

      类型String
      描述

      验证 rpc.certfile 的 CA 证书文件的路径。
      注意:集群中所有节点的证书必须使用同一个 CA 签发。

    • send_timeout

      类型String
      默认值5s
      描述

      发送 RPC 请求的超时时间。

    • authentication_timeout

      类型String
      默认值5s
      描述

      远程节点认证的超时时间。

    • call_receive_timeout

      类型String
      默认值15s
      描述

      同步 RPC 的回复超时时间。

    • socket_keepalive_idle

      类型String
      默认值15m
      描述

      broker 之间的连接在最后一条消息发送后保持打开的时间。

    • socket_keepalive_interval

      类型String
      默认值75s
      描述

      keepalive 消息的间隔。

    • socket_keepalive_count

      类型Integer
      默认值9
      描述

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

    • socket_sndbuf

      类型String
      默认值1MB
      描述

      TCP 调节参数。TCP 发送缓冲区大小。

    • socket_recbuf

      类型String
      默认值1MB
      描述

      TCP 调节参数。TCP 接收缓冲区大小。

    • socket_buffer

      类型String
      默认值1MB
      描述

      TCP 调节参数。用户模式套接字缓冲区大小。

    • insecure_fallback

      类型Boolean
      默认值true
      描述

      兼容旧的无鉴权模式

  • sys_topics

    类型Struct(sys_topics)
    描述

    系统主题配置。

    sys_topics

    • sys_msg_interval

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

      发送 $SYS 主题的间隔时间。

    • sys_heartbeat_interval

      类型OneOf(String("disabled"),String)
      默认值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

      类型String
      默认值32MB
      描述

      Heap 的总大小。

  • force_gc

    类型Struct(force_gc)

    force_gc

    • enable

      类型Boolean
      默认值true
      描述

      启用强制垃圾回收。

    • count

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

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

    • bytes

      类型String
      默认值16MB
      描述

      在进程处理过多少个字节之后,对此进程执行垃圾回收。

  • sysmon

    类型Struct(sysmon)

    sysmon

    • vm

      类型Struct(sysmon_vm)

      sysmon_vm

      • process_check_interval

        类型String
        默认值30s
        描述

        定期进程限制检查的时间间隔。

      • process_high_watermark

        类型String
        默认值80%
        描述

        在发出相应警报之前,本地节点上可以同时存在多少进程的阈值(以进程百分比表示)。

      • process_low_watermark

        类型String
        默认值60%
        描述

        在清除相应警报之前,本地节点上可以同时存在多少进程的阈值(以进程百分比表示)。

      • long_gc

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

        当系统检测到某个 Erlang 进程垃圾回收占用过长时间,会触发一条带有 long_gc 关键字的日志。 同时还会发布一条主题为 $SYS/sysmon/long_gc 的 MQTT 系统消息。

      • long_schedule

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

        启用后,如果 Erlang VM 调度器出现某个任务占用时间过长时,会触发一条带有 'long_schedule' 关键字的日志。 同时还会发布一条主题为 $SYS/sysmon/long_schedule 的 MQTT 系统消息。

      • large_heap

        类型OneOf(String("disabled"),String)
        默认值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

        类型String
        默认值60s
        描述

        定期 CPU 检查的时间间隔。

      • cpu_high_watermark

        类型String
        默认值80%
        描述

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

      • cpu_low_watermark

        类型String
        默认值60%
        描述

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

      • mem_check_interval

        类型OneOf(String("disabled"),String)
        默认值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

      类型String
      默认值24h
      描述

      停用报警的保留时间。报警在停用时不会立即删除,而是在保留时间之后删除。

  • flapping_detect

    类型Struct(flapping_detect)

    flapping_detect

    • enable

      类型Boolean
      默认值false
      描述

      启用抖动检测功能。

    • window_time

      类型String
      默认值1m
      描述

      抖动检测的时间窗口。

    • max_count

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

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

    • ban_time

      类型String
      默认值5m
      描述

      抖动的客户端将会被禁止登录多长时间。

  • bridges

    类型Struct(bridges)

    bridges

    • webhook

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

      转发消息到 HTTP 服务器的 WebHook

      config

      • enable

        类型Boolean
        默认值true
        描述

        Enable or disable this bridge

      • resource_opts

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

        资源相关的选项。

        creation_opts

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

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

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

          健康检查间隔。

        • start_after_created
          类型Boolean
          默认值true
          描述

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

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

          在回复资源创建请求前等待资源进入健康状态的时间。

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

          Deprecated since 5.1.0.

        • query_mode
          类型Enum(sync,async)
          默认值async
          描述

          请求模式。可选 '同步/异步',默认为'异步'模式。

        • request_ttl
          别名request_timeout
          类型OneOf(String,String("infinity"))
          默认值45s
          描述

          Starting from the moment when the request enters the buffer, if the request remains in the buffer for the specified time or is sent but does not receive a response or acknowledgement in time, the request is considered expired.

        • 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
          类型String
          默认值256MB
          描述

          每个缓存 worker 允许使用的最大字节数。

      • connect_timeout

        类型String
        默认值15s
        描述

        The timeout when connecting to the HTTP server.

      • retry_interval

        类型String
        描述

        Deprecated since 5.0.4.

      • pool_type

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

        The type of the pool. Can be one of random, hash.

      • pool_size

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

        The pool size.

      • enable_pipelining

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

        A positive integer. Whether to send HTTP requests continuously, when set to 1, it means that after each HTTP request is sent, you need to wait for the server to return and then continue to send the next request.

      • request

        类型Struct(request)
        描述

        Configure HTTP request parameters.

        request

        • method
          类型String
          描述

          HTTP method.

        • path
          类型String
          描述

          URL path.

        • body
          类型String
          描述

          HTTP request body.

        • headers
          类型Map
          描述

          List of HTTP headers.

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

          Max retry times if error on sending request.

        • request_timeout
          类型String
          描述

          HTTP request timeout.

      • 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
          类型String
          默认值5s
          描述

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

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

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

      • url

        类型String
        描述

        The URL of the HTTP Bridge.
        Template with variables is allowed in the path, but variables cannot be used in the scheme, host, or port part.
        For example, http://localhost:9901/${topic} is allowed, but http://${host}:9901/message or http://localhost:${port}/message is not allowed.

      • direction

        类型String("egress")
        描述

        Deprecated since 5.0.12.

      • local_topic

        类型String
        描述

        The MQTT topic filter to be forwarded to the HTTP server. All MQTT 'PUBLISH' messages with the topic matching the local_topic will be forwarded.
        NOTE: if this bridge is used as the action of a rule (EMQX rule engine), and also local_topic is configured, then both the data got from the rule and the MQTT messages that match local_topic will be forwarded.

      • method

        类型Enum(post,put,get,delete)
        默认值post
        描述

        The method of the HTTP request. All the available methods are: post, put, get, delete.
        Template with variables is allowed.

      • headers

        类型Map
        默认值{ accept = "application/json" cache-control = no-cache connection = keep-alive content-type = "application/json" keep-alive = "timeout=5" }
        描述

        The headers of the HTTP request.
        Template with variables is allowed.

      • body

        类型String
        描述

        The body of the HTTP request.
        If not provided, the body will be a JSON object of all the available fields.
        There, 'all the available fields' means the context of a MQTT message when this webhook is triggered by receiving a MQTT message (the local_topic is set), or the context of the event when this webhook is triggered by a rule (i.e. this webhook is used as an action of a rule).
        Template with variables is allowed.

      • max_retries

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

        HTTP request max retry times if failed.

      • request_timeout

        类型String
        描述

        Deprecated since v5.0.26.

    • mqtt

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

      桥接到另一个 MQTT Broker 的 MQTT Bridge

      config

      • enable

        类型Boolean
        默认值true
        描述

        启用/禁用 Bridge

      • resource_opts

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

        资源相关的选项。

        creation_opts

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

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

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

          健康检查间隔。

        • start_after_created
          类型Boolean
          默认值true
          描述

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

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

          在回复资源创建请求前等待资源进入健康状态的时间。

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

          Deprecated since 5.1.0.

        • query_mode
          类型Enum(sync,async)
          默认值async
          描述

          请求模式。可选 '同步/异步',默认为'异步'模式。

        • request_ttl
          别名request_timeout
          类型OneOf(String,String("infinity"))
          默认值45s
          描述

          Starting from the moment when the request enters the buffer, if the request remains in the buffer for the specified time or is sent but does not receive a response or acknowledgement in time, the request is considered expired.

        • 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
          类型String
          默认值256MB
          描述

          每个缓存 worker 允许使用的最大字节数。

      • mode

        类型Enum(cluster_shareload)
        描述

        Deprecated since v5.1.0 & e5.1.0.

      • server

        类型String
        描述

        The host and port of the remote MQTT broker

      • clientid_prefix

        类型String
        描述

        Optional prefix to prepend to the clientid used by egress bridges.

      • reconnect_interval

        类型String
        描述

        Deprecated since v5.0.16.

      • proto_ver

        类型Enum(v3,v4,v5)
        默认值v4
        描述

        The MQTT protocol version

      • bridge_mode

        类型Boolean
        默认值false
        描述

        If enable bridge mode. NOTE: This setting is only for MQTT protocol version older than 5.0, and the remote MQTT broker MUST support this feature. If bridge_mode is set to true, the bridge will indicate to the remote broker that it is a bridge not an ordinary client. This means that loop detection will be more effective and that retained messages will be propagated correctly.

      • username

        类型String
        描述

        The username of the MQTT protocol

      • password

        类型String
        描述

        The password of the MQTT protocol

      • clean_start

        类型Boolean
        默认值true
        描述

        Whether to start a clean session when reconnecting a remote broker for ingress bridge

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

        Max inflight (sent, but un-acked) messages of the MQTT protocol

      • 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
          类型String
          默认值5s
          描述

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。

        • enable
          类型Boolean
          默认值false
          描述

          启用 TLS。

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

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

      • ingress

        类型Struct(ingress)
        描述

        The ingress config defines how this bridge receive messages from the remote MQTT broker, and then send them to the local broker.
        Template with variables is allowed in 'remote.qos', 'local.topic', 'local.qos', 'local.retain', 'local.payload'.
        NOTE: if this bridge is used as the input of a rule, and also 'local.topic' is configured, then messages got from the remote broker will be sent to both the 'local.topic' and the rule.

        ingress

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

          Size of the pool of MQTT clients that will ingest messages from the remote broker.
          This value will be respected only if 'remote.topic' is a shared subscription topic or topic-filter (for example $share/name1/topic1 or $share/name2/topic2/#), otherwise only a single MQTT client will be used. Each MQTT client will be assigned 'clientid' of the form '${clientid_prefix}:${bridge_name}:ingress:${node}:${n}' where 'n' is the number of a client inside the pool. NOTE: Non-shared subscription will not work well when EMQX is clustered.

        • remote
          类型Struct(ingress_remote)
          描述

          The configs about subscribing to the remote broker.

          ingress_remote

          • topic
            类型String
            描述

            Receive messages from which topic of the remote broker

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

            The QoS level to be used when subscribing to the remote broker

        • local
          类型Struct(ingress_local)
          描述

          The configs about sending message to the local broker.

          ingress_local

          • topic
            类型String
            描述

            Send messages to which topic of the local broker.
            Template with variables is allowed.

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

            The QoS of the MQTT message to be sent.
            Template with variables is allowed.

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

            The 'retain' flag of the MQTT message to be sent.
            Template with variables is allowed.

          • payload
            类型String
            描述

            The payload of the MQTT message to be sent.
            Template with variables is allowed.

      • egress

        类型Struct(egress)
        描述

        The egress config defines how this bridge forwards messages from the local broker to the remote broker.
        Template with variables is allowed in 'remote.topic', 'local.qos', 'local.retain', 'local.payload'.
        NOTE: if this bridge is used as the action of a rule, and also 'local.topic' is configured, then both the data got from the rule and the MQTT messages that matches 'local.topic' will be forwarded.

        egress

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

          Size of the pool of MQTT clients that will publish messages to the remote broker.
          Each MQTT client will be assigned 'clientid' of the form '${clientid_prefix}:${bridge_name}:egress:${node}:${n}' where 'n' is the number of a client inside the pool.

        • local
          类型Struct(egress_local)
          描述

          The configs about receiving messages from local broker.

          egress_local

          • topic
            类型String
            描述

            The local topic to be forwarded to the remote broker

        • remote
          类型Struct(egress_remote)
          描述

          The configs about sending message to the remote broker.

          egress_remote

          • topic
            类型String
            描述

            Forward to which topic of the remote broker.
            Template with variables is allowed.

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

            The QoS of the MQTT message to be sent.
            Template with variables is allowed.

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

            The 'retain' flag of the MQTT message to be sent.
            Template with variables is allowed.

          • payload
            类型String
            描述

            The payload of the MQTT message to be sent.
            Template with variables is allowed.

  • retainer

    类型Struct(retainer)

    retainer

    • enable

      类型Boolean
      默认值true
      描述

      是否开启消息保留功能

    • msg_expiry_interval

      类型String
      默认值0s
      描述

      消息保留时间。0 代表永久保留

    • msg_clear_interval

      类型String
      默认值0s
      描述

      消息清理间隔。0 代表不进行清理

    • max_payload_size

      类型String
      默认值1MB
      描述

      消息大小最大值

    • stop_publish_clear_msg

      类型Boolean
      默认值false
      描述

      是否不发送保留消息的清理消息,在 MQTT 5.0 中如果一条保留消息的消息体为空,则会清除掉之前存储 的对应的保留消息,通过这个值控制是否停止发送清理消息

    • delivery_rate

      别名deliver_rate
      类型String
      描述

      The maximum rate of delivering retained messages

    • 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

      类型String
      描述

      Deprecated since 5.0.24.

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

          TCP协议的Socket acceptor池大小, 默认设置在线的调度器数量(通常为 CPU 核数)

        • max_connections
          类型Integer
          默认值512
          描述

          同时处理的最大连接数。

        • backlog
          类型Integer
          默认值1024
          描述

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

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

          Socket发送超时时间。

        • inet6
          类型Boolean
          默认值false
          描述

          启用IPv6, 如果机器不支持IPv6,请关闭此选项,否则会导致 Dashboard 无法使用。

        • ipv6_v6only
          类型Boolean
          默认值false
          描述

          当开启 inet6 功能的同时禁用 IPv4-to-IPv6 映射。该配置仅在 inet6 功能开启时有效。

        • proxy_header
          类型Boolean
          默认值false
          描述

          开启对 HAProxy 的支持,注意:一旦开启了这个功能,就无法再处理普通的 HTTP 请求了。

      • https

        类型Struct(https)
        描述

        SSL listeners

        https

        • bind
          类型String
          默认值0
          描述

          监听地址和端口,热更新此配置时,会重启 Dashboard 服务。

        • ssl_options
          类型Struct(ssl_options)
          描述

          SSL/TLS options for the dashboard listener.

          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
            类型String
            默认值5s
            描述

            在闲置一定时间后休眠 SSL 进程,减少其内存占用。

          • 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
            类型String
            默认值15s
            描述

            握手完成所允许的最长时间

        • num_acceptors
          类型Integer
          默认值20
          描述

          TCP协议的Socket acceptor池大小, 默认设置在线的调度器数量(通常为 CPU 核数)

        • max_connections
          类型Integer
          默认值512
          描述

          同时处理的最大连接数。

        • backlog
          类型Integer
          默认值1024
          描述

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

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

          Socket发送超时时间。

        • inet6
          类型Boolean
          默认值false
          描述

          启用IPv6, 如果机器不支持IPv6,请关闭此选项,否则会导致 Dashboard 无法使用。

        • ipv6_v6only
          类型Boolean
          默认值false
          描述

          当开启 inet6 功能的同时禁用 IPv4-to-IPv6 映射。该配置仅在 inet6 功能开启时有效。

        • proxy_header
          类型Boolean
          默认值false
          描述

          开启对 HAProxy 的支持,注意:一旦开启了这个功能,就无法再处理普通的 HTTP 请求了。

    • token_expired_time

      类型String
      默认值60m
      描述

      JWT token 过期时间。默认设置为 60 分钟。

    • cors

      类型Boolean
      默认值false
      描述

      支持跨域资源共享(CORS), 允许服务器指示任何来源(域名、协议或端口),除了本服务器之外的任何浏览器应允许加载资源。

  • gateway

    类型Struct(gateway)

    gateway

    • stomp

      类型Struct(stomp)

      stomp

      • frame

        类型Struct(stomp_frame)

        stomp_frame

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

          允许的 Header 最大数量

        • 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
              类型String
              默认值15s
              描述

              连接的 TCP 发送超时。

            • send_timeout_close
              类型Boolean
              默认值true
              描述

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

            • recbuf
              类型String
              描述

              连接的 TCP 接收缓冲区(OS 内核)。

            • sndbuf
              类型String
              描述

              连接的 TCP 发送缓冲区(OS 内核)。

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

              驱动程序使用的用户空间缓冲区的大小。

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

              当 VM 套接字实现内部排队的数据量达到此限制时,套接字将设置为忙碌状态。

            • nodelay
              类型Boolean
              默认值true
              描述

              连接的 TCP_NODELAY 标识

            • reuseaddr
              类型Boolean
              默认值true
              描述

              连接的 SO_REUSEADDR 标识。

            • keepalive
              类型String
              默认值none
              描述

              Enable TCP keepalive for MQTT connections over TCP or SSL. The value is three comma separated numbers in the format of 'Idle,Interval,Probes'

              • Idle: The number of seconds a connection needs to be idle before the server begins to send out keep-alive probes (Linux default 7200).
              • Interval: The number of seconds between TCP keep-alive probes (Linux default 75).
              • Probes: The maximum number of TCP keep-alive probes to send before giving up and killing the connection if no response is obtained from the other end (Linux default 9). For example "240,30,5" means: EMQX should start sending TCP keepalive probes after the connection is in idle for 240 seconds, and the probes are sent every 30 seconds until a response is received from the MQTT client, if it misses 5 consecutive responses, EMQX should close the connection. Default: 'none'
          • proxy_protocol
            类型Boolean
            默认值false
            描述

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

          • proxy_protocol_timeout
            类型String
            默认值15s
            描述

            接收 Proxy Protocol 报文头的超时时间。如果在超时内没有收到 Proxy Protocol 包,EMQX 将关闭 TCP 连接。

          • 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
              类型String
              默认值15s
              描述

              连接的 TCP 发送超时。

            • send_timeout_close
              类型Boolean
              默认值true
              描述

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

            • recbuf
              类型String
              描述

              连接的 TCP 接收缓冲区(OS 内核)。

            • sndbuf
              类型String
              描述

              连接的 TCP 发送缓冲区(OS 内核)。

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

              驱动程序使用的用户空间缓冲区的大小。

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

              当 VM 套接字实现内部排队的数据量达到此限制时,套接字将设置为忙碌状态。

            • nodelay
              类型Boolean
              默认值true
              描述

              连接的 TCP_NODELAY 标识

            • reuseaddr
              类型Boolean
              默认值true
              描述

              连接的 SO_REUSEADDR 标识。

            • keepalive
              类型String
              默认值none
              描述

              Enable TCP keepalive for MQTT connections over TCP or SSL. The value is three comma separated numbers in the format of 'Idle,Interval,Probes'

              • Idle: The number of seconds a connection needs to be idle before the server begins to send out keep-alive probes (Linux default 7200).
              • Interval: The number of seconds between TCP keep-alive probes (Linux default 75).
              • Probes: The maximum number of TCP keep-alive probes to send before giving up and killing the connection if no response is obtained from the other end (Linux default 9). For example "240,30,5" means: EMQX should start sending TCP keepalive probes after the connection is in idle for 240 seconds, and the probes are sent every 30 seconds until a response is received from the MQTT client, if it misses 5 consecutive responses, EMQX should close the connection. Default: 'none'
          • proxy_protocol
            类型Boolean
            默认值false
            描述

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

          • proxy_protocol_timeout
            类型String
            默认值15s
            描述

            接收 Proxy Protocol 报文头的超时时间。如果在超时内没有收到 Proxy Protocol 包,EMQX 将关闭 TCP 连接。

          • 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
              类型String
              默认值5s
              描述

              在闲置一定时间后休眠 SSL 进程,减少其内存占用。

            • 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
              类型String
              默认值15s
              描述

              握手完成所允许的最长时间

            • 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
                类型String
                默认值5m
                描述

                为服务器刷新OCSP响应的周期。

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

                检查 OCSP 响应时,HTTP 请求的超时。

            • enable_crl_check
              类型Boolean
              默认值false
              描述

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

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该网关

      • enable_stats

        类型Boolean
        默认值true
        描述

        是否开启客户端统计

      • idle_timeout

        类型String
        默认值30s
        描述

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

        1. 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
        2. 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
      • 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
              类型String
              描述

              Socket 在内核空间接收缓冲区的大小。

            • sndbuf
              类型String
              描述

              Socket 在内核空间发送缓冲区的大小。

            • buffer
              类型String
              描述

              Socket 在用户空间的缓冲区大小。

            • 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
              类型String
              描述

              Socket 在内核空间接收缓冲区的大小。

            • sndbuf
              类型String
              描述

              Socket 在内核空间发送缓冲区的大小。

            • buffer
              类型String
              描述

              Socket 在用户空间的缓冲区大小。

            • 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
              类型String
              默认值5s
              描述

              在闲置一定时间后休眠 SSL 进程,减少其内存占用。

            • 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
              类型String
              默认值15s
              描述

              握手完成所允许的最长时间

            • 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
                类型String
                默认值5m
                描述

                为服务器刷新OCSP响应的周期。

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

                检查 OCSP 响应时,HTTP 请求的超时。

            • enable_crl_check
              类型Boolean
              默认值false
              描述

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

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该网关

      • enable_stats

        类型Boolean
        默认值true
        描述

        是否开启客户端统计

      • idle_timeout

        类型String
        默认值30s
        描述

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

        1. 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
        2. 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
      • 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

        类型String
        默认值15s
        描述

        允许 LwM2M 客户端允许设置的心跳最小值。

      • lifetime_max

        类型String
        默认值86400s
        描述

        允许 LwM2M 客户端允许设置的心跳最大值。

      • qmode_time_window

        类型String
        默认值22s
        描述

        在QMode模式下,LwM2M网关认为网络链接有效的时间窗口的值。 例如,在收到客户端的更新信息后,在这个时间窗口内的任何信息都会直接发送到LwM2M客户端,而超过这个时间窗口的所有信息都会暂时储存在内存中。

      • 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
              类型String
              描述

              Socket 在内核空间接收缓冲区的大小。

            • sndbuf
              类型String
              描述

              Socket 在内核空间发送缓冲区的大小。

            • buffer
              类型String
              描述

              Socket 在用户空间的缓冲区大小。

            • 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
              类型String
              描述

              Socket 在内核空间接收缓冲区的大小。

            • sndbuf
              类型String
              描述

              Socket 在内核空间发送缓冲区的大小。

            • buffer
              类型String
              描述

              Socket 在用户空间的缓冲区大小。

            • 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
              类型String
              默认值5s
              描述

              在闲置一定时间后休眠 SSL 进程,减少其内存占用。

            • 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
              类型String
              默认值15s
              描述

              握手完成所允许的最长时间

            • 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
                类型String
                默认值5m
                描述

                为服务器刷新OCSP响应的周期。

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

                检查 OCSP 响应时,HTTP 请求的超时。

            • enable_crl_check
              类型Boolean
              默认值false
              描述

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

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该网关

      • enable_stats

        类型Boolean
        默认值true
        描述

        是否开启客户端统计

      • idle_timeout

        类型String
        默认值30s
        描述

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

        1. 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
        2. 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
      • 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
            类型String
            默认值5s
            描述

            在闲置一定时间后休眠 SSL 进程,减少其内存占用。

          • 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
            类型String
            默认值15s
            描述

            握手完成所允许的最长时间

      • handler

        类型Struct(exproto_grpc_handler)
        描述

        配置 ExProto 网关需要请求的 ConnectionHandler 服务地址。 该服务用于给 ExProto 提供客户端的 Socket 事件处理、字节解码、订阅消息接收等功能。

        exproto_grpc_handler

        • address
          类型String
          描述

          对端 gRPC 服务器地址。

        • service_name
          类型OneOf(String("ConnectionHandler"),String("ConnectionUnaryHandler"))
          默认值ConnectionUnaryHandler
          描述

          The service name to handle the connection events. In the initial version, we expected to use streams to improve the efficiency of requests in ConnectionHandler. But unfortunately, events between different streams are out of order. It causes the OnSocketCreated event to may arrive later than OnReceivedBytes. So we added the ConnectionUnaryHandler service since v5.0.25 and forced the use of Unary in it to avoid ordering problems.

        • 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
            类型String
            默认值5s
            描述

            在闲置一定时间后休眠 SSL 进程,减少其内存占用。

          • 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
              类型String
              默认值15s
              描述

              连接的 TCP 发送超时。

            • send_timeout_close
              类型Boolean
              默认值true
              描述

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

            • recbuf
              类型String
              描述

              连接的 TCP 接收缓冲区(OS 内核)。

            • sndbuf
              类型String
              描述

              连接的 TCP 发送缓冲区(OS 内核)。

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

              驱动程序使用的用户空间缓冲区的大小。

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

              当 VM 套接字实现内部排队的数据量达到此限制时,套接字将设置为忙碌状态。

            • nodelay
              类型Boolean
              默认值true
              描述

              连接的 TCP_NODELAY 标识

            • reuseaddr
              类型Boolean
              默认值true
              描述

              连接的 SO_REUSEADDR 标识。

            • keepalive
              类型String
              默认值none
              描述

              Enable TCP keepalive for MQTT connections over TCP or SSL. The value is three comma separated numbers in the format of 'Idle,Interval,Probes'

              • Idle: The number of seconds a connection needs to be idle before the server begins to send out keep-alive probes (Linux default 7200).
              • Interval: The number of seconds between TCP keep-alive probes (Linux default 75).
              • Probes: The maximum number of TCP keep-alive probes to send before giving up and killing the connection if no response is obtained from the other end (Linux default 9). For example "240,30,5" means: EMQX should start sending TCP keepalive probes after the connection is in idle for 240 seconds, and the probes are sent every 30 seconds until a response is received from the MQTT client, if it misses 5 consecutive responses, EMQX should close the connection. Default: 'none'
          • proxy_protocol
            类型Boolean
            默认值false
            描述

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

          • proxy_protocol_timeout
            类型String
            默认值15s
            描述

            接收 Proxy Protocol 报文头的超时时间。如果在超时内没有收到 Proxy Protocol 包,EMQX 将关闭 TCP 连接。

          • 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
              类型String
              默认值15s
              描述

              连接的 TCP 发送超时。

            • send_timeout_close
              类型Boolean
              默认值true
              描述

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

            • recbuf
              类型String
              描述

              连接的 TCP 接收缓冲区(OS 内核)。

            • sndbuf
              类型String
              描述

              连接的 TCP 发送缓冲区(OS 内核)。

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

              驱动程序使用的用户空间缓冲区的大小。

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

              当 VM 套接字实现内部排队的数据量达到此限制时,套接字将设置为忙碌状态。

            • nodelay
              类型Boolean
              默认值true
              描述

              连接的 TCP_NODELAY 标识

            • reuseaddr
              类型Boolean
              默认值true
              描述

              连接的 SO_REUSEADDR 标识。

            • keepalive
              类型String
              默认值none
              描述

              Enable TCP keepalive for MQTT connections over TCP or SSL. The value is three comma separated numbers in the format of 'Idle,Interval,Probes'

              • Idle: The number of seconds a connection needs to be idle before the server begins to send out keep-alive probes (Linux default 7200).
              • Interval: The number of seconds between TCP keep-alive probes (Linux default 75).
              • Probes: The maximum number of TCP keep-alive probes to send before giving up and killing the connection if no response is obtained from the other end (Linux default 9). For example "240,30,5" means: EMQX should start sending TCP keepalive probes after the connection is in idle for 240 seconds, and the probes are sent every 30 seconds until a response is received from the MQTT client, if it misses 5 consecutive responses, EMQX should close the connection. Default: 'none'
          • proxy_protocol
            类型Boolean
            默认值false
            描述

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

          • proxy_protocol_timeout
            类型String
            默认值15s
            描述

            接收 Proxy Protocol 报文头的超时时间。如果在超时内没有收到 Proxy Protocol 包,EMQX 将关闭 TCP 连接。

          • 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
              类型String
              默认值5s
              描述

              在闲置一定时间后休眠 SSL 进程,减少其内存占用。

            • 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
              类型String
              默认值15s
              描述

              握手完成所允许的最长时间

            • 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
                类型String
                默认值5m
                描述

                为服务器刷新OCSP响应的周期。

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

                检查 OCSP 响应时,HTTP 请求的超时。

            • 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
              类型String
              描述

              Socket 在内核空间接收缓冲区的大小。

            • sndbuf
              类型String
              描述

              Socket 在内核空间发送缓冲区的大小。

            • buffer
              类型String
              描述

              Socket 在用户空间的缓冲区大小。

            • 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
              类型String
              描述

              Socket 在内核空间接收缓冲区的大小。

            • sndbuf
              类型String
              描述

              Socket 在内核空间发送缓冲区的大小。

            • buffer
              类型String
              描述

              Socket 在用户空间的缓冲区大小。

            • 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
              类型String
              默认值5s
              描述

              在闲置一定时间后休眠 SSL 进程,减少其内存占用。

            • 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
              类型String
              默认值15s
              描述

              握手完成所允许的最长时间

            • 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
                类型String
                默认值5m
                描述

                为服务器刷新OCSP响应的周期。

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

                检查 OCSP 响应时,HTTP 请求的超时。

            • enable_crl_check
              类型Boolean
              默认值false
              描述

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

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该网关

      • enable_stats

        类型Boolean
        默认值true
        描述

        是否开启客户端统计

      • idle_timeout

        类型String
        默认值30s
        描述

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

        1. 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
        2. 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
      • clientinfo_override

        类型Struct(clientinfo_override)
        描述

        ClientInfo 重写。

        clientinfo_override

        • username
          类型String
          描述

          username 重写模板

        • password
          类型String
          描述

          password 重写模板

        • clientid
          类型String
          描述

          clientid 重写模板

    • coap

      类型Struct(coap)

      coap

      • heartbeat

        类型String
        默认值30s
        描述

        CoAP 网关要求客户端的最小心跳间隔时间。 当 connection_required 开启后,该参数用于检查客户端连接是否存活

      • 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
              类型String
              描述

              Socket 在内核空间接收缓冲区的大小。

            • sndbuf
              类型String
              描述

              Socket 在内核空间发送缓冲区的大小。

            • buffer
              类型String
              描述

              Socket 在用户空间的缓冲区大小。

            • 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
              类型String
              描述

              Socket 在内核空间接收缓冲区的大小。

            • sndbuf
              类型String
              描述

              Socket 在内核空间发送缓冲区的大小。

            • buffer
              类型String
              描述

              Socket 在用户空间的缓冲区大小。

            • 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
              类型String
              默认值5s
              描述

              在闲置一定时间后休眠 SSL 进程,减少其内存占用。

            • 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
              类型String
              默认值15s
              描述

              握手完成所允许的最长时间

            • 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
                类型String
                默认值5m
                描述

                为服务器刷新OCSP响应的周期。

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

                检查 OCSP 响应时,HTTP 请求的超时。

            • enable_crl_check
              类型Boolean
              默认值false
              描述

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

      • enable

        类型Boolean
        默认值true
        描述

        是否启用该网关

      • enable_stats

        类型Boolean
        默认值true
        描述

        是否开启客户端统计

      • idle_timeout

        类型String
        默认值30s
        描述

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

        1. 一个新创建的客户端进程如果在该时间间隔内没有收到任何客户端请求,将被直接关闭。
        2. 一个正在运行的客户进程如果在这段时间后没有收到任何客户请求,将进入休眠状态以节省资源。
      • clientinfo_override

        类型Struct(clientinfo_override)
        描述

        ClientInfo 重写。

        clientinfo_override

        • username
          类型String
          描述

          username 重写模板

        • password
          类型String
          描述

          password 重写模板

        • clientid
          类型String
          描述

          clientid 重写模板

  • prometheus

    类型Struct(prometheus)

    prometheus

    • push_gateway_server

      类型String
      默认值"http://127.0.0.1:9091"
      描述

      Prometheus 服务器地址

    • interval

      类型String
      默认值15s
      描述

      数据推送间隔

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

      类型Boolean
      默认值false
      描述

      开启或关闭 Prometheus 数据推送

    • vm_dist_collector

      类型Enum(disabled,enabled)
      默认值disabled
      描述

      开启或关闭 VM 分布采集器,收集 Erlang 分布机制中涉及的套接字和进程的信息。

    • mnesia_collector

      类型Enum(enabled,disabled)
      默认值disabled
      描述

      开启或关闭 Mnesia 采集器, 使用 mnesia:system_info/1 收集 Mnesia 相关指标

    • vm_statistics_collector

      类型Enum(enabled,disabled)
      默认值disabled
      描述

      开启或关闭 VM 统计采集器, 使用 erlang:statistics/1 收集 Erlang VM 相关指标

    • vm_system_info_collector

      类型Enum(enabled,disabled)
      默认值disabled
      描述

      开启或关闭 VM 系统信息采集器, 使用 erlang:system_info/1 收集 Erlang VM 相关指标

    • vm_memory_collector

      类型Enum(enabled,disabled)
      默认值disabled
      描述

      开启或关闭 VM 内存采集器, 使用 erlang:memory/0 收集 Erlang 虚拟机动态分配的内存信息,同时提供基本的 (D)ETS 统计信息

    • vm_msacc_collector

      类型Enum(enabled,disabled)
      默认值disabled
      描述

      开启或关闭 VM msacc 采集器, 使用 erlang:statistics(microstate_accounting) 收集微状态计数指标

  • exhook

    类型Struct(exhook)

    exhook

    • servers

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

      ExHook 服务器列表

      server

      • name

        类型String
        描述

        ExHook 服务器名称

      • enable

        类型Boolean
        默认值true
        描述

        开启这个 Exhook 服务器

      • url

        类型String
        描述

        gRPC 服务器地址

      • request_timeout

        类型String
        默认值5s
        描述

        gRPC 服务器请求超时时间

      • 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
          类型String
          默认值5s
          描述

          在闲置一定时间后休眠 SSL 进程,减少其内存占用。

        • 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
          类型String
          描述

          套接字的最小接收缓冲区大小

        • sndbuf
          类型String
          描述

          套接字的最小发送缓冲区大小

      • auto_reconnect

        类型OneOf(String("false"),String)
        默认值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

      类型String
      默认值500ms
      描述

      慢订阅统计的阈值

    • expire_interval

      类型String
      默认值300s
      描述

      慢订阅记录的有效时间

    • top_k_num

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

      慢订阅统计表的记录数量上限

    • stats_type

      类型Enum(whole,internal,response)
      默认值whole
      描述

      慢订阅的统计类型

  • opentelemetry

    类型Struct(opentelemetry)

    opentelemetry

    • exporter

      类型Struct(exporter)
      描述

      Open Telemetry Exporter

      exporter

      • endpoint

        类型String
        默认值"http://localhost:4317"
        描述

        Open Telemetry Exporter Endpoint

      • interval

        类型String
        默认值10s
        描述

        The interval of sending metrics to Open Telemetry Endpoint

    • enable

      类型Boolean
      默认值false
      描述

      Enable or disable open telemetry metrics

  • api_key

    类型Struct(api_key)

    api_key

    • bootstrap_file

      类型String
      默认值""
      描述

      用于在启动 emqx 时,添加 API 密钥,其格式为: 7e729ae70d23144b:2QILI9AcQ9BYlVqLDHQNWN2saIjBV4egr1CZneTNKr9CpK ec3907f865805db0:Ee3taYltUKtoBVD9C3XjQl9C6NXheip8Z9B69BpUv5JxVHL