配置
HOCON
EMQX Edge 使用 Human-Optimized Config Object Notation(HOCON)作为默认配置文件格式。HOCON 是 JSON 的超集,设计目标是更适合人类阅读和编写,非常适合管理配置数据。
所有主配置文件都位于 etc 目录。除主配置文件外,EMQX Edge 还支持通过 include 指令进行模块化配置,允许你将认证等特定功能的设置拆分到独立文件中。
主要配置文件包括:
| Configuration File | Description |
|---|---|
etc/nanomq.conf | EMQX Edge 核心配置 |
etc/nanomq_pwd.conf | 用户名和密码认证设置 |
etc/nanomq_acl.conf | 访问控制(ACL)设置 |
etc/nanomq_bridge.conf | MQTT 桥接配置(与 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 选项。任何出现在配置文件中的配置默认都会启用。