Skip to content

配置 ​

HOCON ​

EMQX Edge 使用 Human-Optimized Config Object Notation(HOCON)作为默认配置文件格式。HOCON 是 JSON 的超集,设计目标是更适合人类阅读和编写,非常适合管理配置数据。

所有主配置文件都位于 etc 目录。除主配置文件外,EMQX Edge 还支持通过 include 指令进行模块化配置,允许你将认证等特定功能的设置拆分到独立文件中。

主要配置文件包括:

Configuration FileDescription
etc/nanomq.confEMQX Edge 核心配置
etc/nanomq_pwd.conf用户名和密码认证设置
etc/nanomq_acl.conf访问控制(ACL)设置
etc/nanomq_bridge.confMQTT 桥接配置(与 nanomq_cli 一起使用)

以下章节中的配置语法和示例均使用 HOCON 格式。

语法 ​

在配置文件中,值可以写成类似 JSON 的对象,例如:

bash
log {
    dir = "/tmp"
    file = "nanomq.log"
}

也可以使用等价的扁平格式,例如:

bash
log.dir = "/tmp"
log.file = "nanomq.log"

这种扁平格式几乎与早期所谓的 cuttlefish 格式向后兼容。

它并不完全兼容,因为 HOCON 要求字符串使用引号,而 cuttlefish 会将 = 右侧的所有字符都视为值。

例如,cuttlefish:websocket.bind = 0.0.0.0:8083/mqtt,HOCON:websocket.bind = "0.0.0.0:8083/mqtt"。

配置覆盖规则 ​

在 HOCON 中,配置对象会被覆盖,即后定义的内容可以覆盖先定义的内容。该覆盖行为遵循两个主要原则:

  • 在同一个文件中,如果同一个对象被定义多次,后定义的内容会递归覆盖先定义的内容。
  • 在分层配置中,高优先级层中的对象会覆盖低优先级层中的对象。

示例

在下面的示例中,log.level=debug 位于初始 log 对象定义之后。因此,log 对象中的 level 字段会从 error 更新为 debug,而 to 字段保持不变:

bash
log {
    to=[file,console]
    level=error
}

## ... more configs ...

log.level=debug

最终合并后的 log 配置为:

bash
log {
    to = [file, console]
    level = debug
}

这种行为允许你在不重复整个配置结构的情况下进行细粒度覆盖。

注意: conf 文件的配置方式不再包含 enable 选项。任何出现在配置文件中的配置默认都会启用。