# 配置说明

# 简介

NanoMQ 的配置文件通常以 .conf 作为后缀名,你可以在 etc 目录找到这些配置文件,主要配置文件包括:

配置文件说明
etc/nanomq.confNanoMQ 配置文件
etc/nanomq_gateway.confNanoMQ 网关配置文件

# 参数说明

# nanomq.conf

# 基本配置参数

参数名数据类型参数说明
urlString监听url。
num_taskq_threadInteger任务线程数。
max_taskq_threadInteger最大任务线程数。
parallelLong并行数。
property_sizeInteger最大属性长度。
msq_lenInteger队列长度。
qos_durationIntegerQOS消息定时间隔时间。
allow_anonymousBoolean允许匿名登录。
tls.enableBoolean启动TLS监听(默认false)。
tls.urlStringTLS监听URL。
tls.keyStringTLS私钥数据。
tls.keypassStringTLS私钥密码。
tls.certStringTLS Cert证书数据。
tls.cacertStringTLS CA证书数据。
tls.verify_peerBoolean验证客户端证书。
tls.fail_if_no_peer_certBoolean拒绝无证书连接,与tls.verify_peer配合使用。
websocket.enableBoolean启动websocket监听(默认true)。
websocket.urlStringWebsocket监听URL。
websocket.tls_urlStringTLS over Websocket监听URL。
http_server.enableBoolean启动Http服务监听(默认false)。
http_server.portIntegerHttp服务端监听端口。
http_server.usernameString访问Http服务用户名。
http_server.passwordString访问Http服务密码。
http_server.auth_typeEnumHttp鉴权方式。(默认 basic
http_server.jwt.public.keyfileStringJWT 公钥文件.
http_server.jwt.private.keyfileStringJWT 私钥文件.
log.toArray[Enum]日志输出类型数组,使用逗号,分隔多种类型
支持文件,控制台,Syslog输出,对应参数:
file, console, syslog
log.levelEnum日志等级:trace, debug, info, warn, error, fatal
log.dirString日志文件存储路径 (输出文件时生效)
log.fileString日志文件名(输出文件时生效)
log.rotation.sizeInteger每个日志文件的最大占用空间;
支持单位: KB | MB | GB;
默认: 10MB
log.rotation.countInteger轮换的最大日志文件数;
默认: 5

# 标准MQTT桥接配置参数

参数名数据类型参数说明
bridge.mqtt.bridge_modeBoolean启动桥接功能(默认false不启用)。
bridge.mqtt.addressString桥接目标broker地址URL。
bridge.mqtt.proto_verString桥接客户端MQTT版本(3|4|5)。
bridge.mqtt.clientidString桥接客户端ID(默认NULL为自动生成随机ID)。
bridge.mqtt.keepaliveInteger保活间隔时间。
bridge.mqtt.clean_startBoolean清除会话。
bridge.mqtt.parallelLong桥接客户端并发数。
bridge.mqtt.usernameString登录用户名。
bridge.mqtt.passwordString登录密码。
bridge.mqtt.forwardsArray[String]转发Topic数组, 使用逗号,分隔多个Topic
bridge.mqtt.subscription.1.topicString第1个订阅Topic
bridge.mqtt.subscription.1.qosInteger第1个订阅Qos
bridge.mqtt.subscription.2.topicString第2个(以此类推)订阅Topic
bridge.mqtt.subscription.2.qosInteger第2个(以此类推)订阅Qos

# Aws IoT Core MQTT桥接配置参数

参数名数据类型参数说明
bridge.mqtt.bridge_modeBoolean启动桥接功能(默认false不启用)。
bridge.mqtt.hostStringAWS IoT Core服务地址。
bridge.mqtt.portIntegerAWS IoT Core MQTT端口。
bridge.mqtt.clientidString桥接客户端ID(默认NULL为自动生成随机ID)。
bridge.mqtt.keepaliveInteger保活间隔时间。
bridge.mqtt.clean_startBoolean清除会话。
bridge.mqtt.parallelLong桥接客户端并发数。
bridge.mqtt.usernameString登录用户名。
bridge.mqtt.passwordString登录密码。
bridge.mqtt.forwardsArray[String]转发Topic数组, 使用逗号,分隔多个Topic
bridge.mqtt.subscription.1.topicString第1个订阅Topic
bridge.mqtt.subscription.1.qosInteger第1个订阅Qos
bridge.mqtt.subscription.2.topicString第2个(以此类推)订阅Topic
bridge.mqtt.subscription.2.qosInteger第2个(以此类推)订阅Qos

# 用户登陆验证配置

参数名数据类型参数说明
auth.1.loginString第1个登录用户名。
auth.1.passwordString第1个登录密码。
auth.2.loginString第2个(以此类推)登录用户名。
auth.2.passwordString第2个(以此类推)登录密码。

# WebHook配置

参数名数据类型参数说明
web.hook.enableBoolean启动WebHook (默认: false)
web.hook.urlStringWebhook URL
web.hook.headers.<Any>StringHTTP Headers
Example:
1. web.hook.headers.content-type=application/json
2. web.hook.headers.accept=*
web.hook.body.encoding_of_payload_fieldEnumPayload编码方式
Options:
plain | base64 | base62
web.hook.ssl.cacertfileStringTLS CA证书文件.
web.hook.ssl.certfileStringTLS Cert证书文件
web.hook.ssl.keyfileStringTLS 私钥文件.
web.hook.ssl.verifyBoolean验证客户端证书。 (默认: false).
web.hook.ssl.server_name_indicationBoolean验证服务端名 (默认: false).
web.hook.pool_sizeInteger连接池大小 (默认: 32).
web.hook.rule.client.connack.<No>String示例:
web.hook.rule.client.connack.1={"action": "on_client_connack"}
web.hook.rule.client.disconnected.<No>String示例:
web.hook.rule.client.disconnected.1={"action": "on_client_disconnected"}
web.hook.rule.message.publish.<No>String示例:
web.hook.rule.message.publish.1={"action": "on_message_publish"}
web.hook.rule.message.publish.1={"action": "on_message_publish", "topic": "topic/1/2"}
web.hook.rule.message.publish.2 = {"action": "on_message_publish", "topic": "foo/#"}

# HTTP身份验证配置

参数名数据类型参数说明默认
auth.http.enableBoolean启动HTTP认证false
auth.http.auth_req.urlString认证请求的目标 URL。http://127.0.0.1:80/mqtt/auth
auth.http.auth_req.methodEnum认证请求的请求方法。
(POST , GET)
POST
auth.http.auth_req.headers.<Any>String指定 HTTP 请求头部中的数据。<Key> 指定 HTTP 请求头部中的字段名,此配置项的值为相应的字段值。<Key> 可以是标准的 HTTP 请求头部字段,也可以自定义的字段,可以配置多个不同的请求头部字段。
auth.http.auth_req.headers.content-type = application/x-www-form-urlencoded
auth.http.auth_req.headers.accept = */*
auth.http.auth_req.paramsString指定认证请求中携带的数据。
, 分隔的 k=v 键值对,v 可以是固定内容,也可以是占位符。
使用 GET 方法时 auth.http.auth_req.params 的值将被转换为以 & 分隔的 k=v 键值对以查询字符串参数的形式发送。
使用 POST 方法时 auth.http.auth_req.params 的值将被转换为以 & 分隔的 k=v 键值对以 Request Body 的形式发送。所有的占位符都会被运行时数据所替换,可用的占位符如下:
%u: 用户名
%c: MQTT Client ID
%a: 客户端的网络 IP 地址
%r: 客户端使用的协议,可以是:mqtt, mqtt-sn, coap, lwm2m 以及 stomp
%P: 密码
%p: 客户端连接的服务端端口
%C: 客户端证书中的 Common Name
%d: 客户端证书中的 Subject
clientid=%c,username=%u,password=%P
auth.http.super_req.urlString指定超级用户认证请求的目标 URL。http://127.0.0.1:80/mqtt/superuser
auth.http.super_req.methodString指定超级用户认证请求的请求方法。
(POST , GET)
POST
auth.http.super_req.headers.<Any>String指定 HTTP 请求头部中的数据。<Key> 指定 HTTP 请求头部中的字段名,此配置项的值为相应的字段值。<Key> 可以是标准的 HTTP 请求头部字段,也可以自定义的字段,可以配置多个不同的请求头部字段。auth.http.super_req.headers.content-type = application/x-www-form-urlencoded
auth.http.super_req.headers.accept = */*
auth.http.super_req.paramsString指定超级用户认证请求中携带的数据。
使用 GET 方法时 auth.http.super_req.params 的值将被转换为以 & 分隔的 k=v 键值对以查询字符串参数的形式发送。
使用 POST 方法时 auth.http.super_req.params 的值将被转换为以 & 分隔的 k=v 键值对以 Request Body 的形式发送。所有的占位符都会被运行时数据所替换,可用的占位符同 auth.http.auth_req.params
clientid=%c,username=%u
auth.http.acl_req.urlString指定 ACL 验证请求的目标 URL。http://127.0.0.1:8991/mqtt/acl
auth.http.acl_req.methodString指定 ACL 验证请求的请求方法。(POST , GET)POST
auth.http.acl_req.headers.<Any>String指定 HTTP 请求头部中的数据。<Key> 指定 HTTP 请求头部中的字段名,此配置项的值为相应的字段值。<Key> 可以是标准的 HTTP 请求头部字段,也可以自定义的字段,可以配置多个不同的请求头部字段。auth.http.super_req.headers.content-type = application/x-www-form-urlencoded
auth.http.super_req.headers.accept = */*
auth.http.acl_req.paramsString指定 ACL 验证请求中携带的数据。以 , 分隔的 k=v 键值对,v 可以是固定内容,也可以是占位符。
使用 GET 方法时 auth.http.acl_req.params 的值将被转换为以 & 分隔的 k=v 键值对以查询字符串参数的形式发送。
使用 POST 方法时 auth.http.acl_req.params 的值将被转换为以 & 分隔的 k=v 键值对以 Request Body 的形式发送。所有的占位符都会被运行时数据所替换,可用的占位符如下:
%A: 需要验证的权限,1 表示订阅,2 表示发布
%u: 用户名
%c: MQTT Client ID
%a: 客户端的网络 IP 地址
%r: 客户端使用的协议,可以是:mqtt, mqtt-sn, coap, lwm2m 以及 stomp
%m: 挂载点
%t: 主题
access=%A,username=%u,clientid=%c,ipaddr=%a,topic=%t,mountpoint=%m
auth.http.timeoutIntegerHTTP 请求超时时间。任何等价于 0s 的设定值都表示永不超时。5s
auth.http.connect_timeoutIntegerHTTP 请求的连接超时时间。任何等价于 0s 的设定值都表示永不超时。5s
auth.http.ssl.cacertfileStringCA 证书文件路径。etc/certs/ca.pem
auth.http.ssl.certfileString客户端证书文件路径。etc/certs/client-cert.pem
auth.http.ssl.keyfileString客户端私钥文件路径。etc/certs/client.key.pem

# 规则引擎配置

参数名数据类型参数说明
rule_optionEnum规则引擎开关, 当时用规则引擎进行持久化,必须设置该选项为 ON。
rule_option.sqliteEnum规则引擎插件开关 (enable/disable)
rule_option.sqlite.conf.pathString规则引擎选项 sqlite3 配置文件路径
rule_option.repubEnum规则引擎 repub 选项 (enable/disable)
rule_option.repub.conf.pathString规则引擎 repub 配置文件路径
rule_option.mysqlEnum规则引擎 mysql 选项 (enable/disable)
rule_option.mysql.conf.pathString规则引擎选项 mysql 配置文件路径

# SQLITE规则配置

参数名数据类型参数说明
rule.sqlite.pathString规则引擎 SQLite3 数据库路径, 默认是 /tmp/rule_engine.db
rule.sqlite.%d.tableString规则引擎 SQLite3 数据库表名, '%d' 是占位符
rule.event.publish.%d.sqlString规则引擎 sql 语句, '%d' 是占位符

# MYSQL规则配置

参数名数据类型参数说明
rule.sqlite.pathString规则引擎 mysql 数据库名字, 默认是 mysql_rule_db
rule.mysql.%d.tableString规则引擎 mysql 数据库表名字, '%d' 是占位符
rule.mysql.%d.hostString规则引擎 mysql 数据库主机名 '%d' 是占位符
rule.mysql.%d.usernameString规则引擎 mysql 数据库用户名, '%d' 是占位符
rule.mysql.%d.passwordString规则引擎 mysql 数据库密码, '%d' 是占位符
rule.event.publish.%d.sqlString规则引擎 sql 语句, '%d' 是占位符

# Repub规则配置

参数名数据类型参数说明
rule.repub.%d.addressString规则引擎重新发布地址 (mqtt-tcp://host:port), '%d' 是占位符
rule.repub.%d.topicString规则引擎重新发布主题, '%d' 是占位符
rule.repub.%d.usernameString规则引擎重新发布用户名, '%d' 是占位符
rule.repub.%d.passwordString规则引擎重新发布密码, '%d' 是占位符
rule.repub.%d.proto_verInteger规则引擎重新发布协议版本, 默认是 4, '%d' 是占位符
rule.repub.%d.clientidString规则引擎重新发布客户端标识符, '%d' 是占位符
rule.repub.%d.keepaliveInteger规则引擎重新发布保活时间, 默认值是 60, '%d' 是占位符
rule.repub.%d.clean_startBoolean规则引擎重新发布 clean_start 标志, 默认是 true,'%d' 是占位符
rule.event.publish.%d.sqlString规则引擎 sql 语句, '%d' 是占位符

# nanomq_gateway.conf

参数名数据类型参数说明
gateway.addressString远端 Broker 地址。
gateway.proto_verStringMQTT 客户端版本(3|4|5)。
gateway.clientidStringMQTT 客户端标识符。
gateway.keepaliveInteger保活间隔时间。
gateway.clean_startBoolean清除会话标志。
gateway.parallelLong并行的 mqtt 客户端数量。
gateway.usernameString登陆的用户名。
gateway.passwordString登陆的密码。
gateway.forwardString转发的主题。
gateway.mqtt.subscription.topicString订阅的 Mqtt 主题。
gateway.mqtt.subscription.qosInteger订阅的 Mqtt 服务级别。
gateway.zmq.sub.addressString远端的 ZMQ 服务订阅地址。
gateway.zmq.pub.addressString远端的 ZMQ 服务发布地址。
gateway.zmq.sub_prefixString远端的 ZMQ 服务订阅前缀。
gateway.zmq.pub_prefixString远端的 ZMQ 服务发布前缀。