v5.0.25.conf 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437
  1. node {
  2. name = "emqx@127.0.0.1"
  3. cookie = "emqxsecretcookie"
  4. data_dir = "data"
  5. }
  6. cluster {
  7. name = emqxcl
  8. discovery_strategy = manual
  9. }
  10. dashboard {
  11. listeners.http {
  12. bind = 18083
  13. }
  14. }
  15. authentication = [
  16. {
  17. backend = "built_in_database"
  18. mechanism = "password_based"
  19. password_hash_algorithm {name = "sha256", salt_position = "suffix"}
  20. user_id_type = "username"
  21. }
  22. ]
  23. authorization {
  24. cache {
  25. enable = true
  26. max_size = 32
  27. ttl = "1m"
  28. }
  29. deny_action = "ignore"
  30. no_match = "allow"
  31. sources = [
  32. {
  33. body {username = "${username}"}
  34. connect_timeout = "15s"
  35. enable_pipelining = 100
  36. headers {"content-type" = "application/json"}
  37. method = "post"
  38. pool_size = 8
  39. request_timeout = "30s"
  40. ssl {enable = false, verify = "verify_peer"}
  41. type = "http"
  42. url = "http://127.0.0.1:8080"
  43. },
  44. {
  45. enable = true
  46. path = "${EMQX_ETC_DIR}/acl.conf"
  47. type = "file"
  48. }
  49. ]
  50. }
  51. bridges {
  52. webhook {
  53. test {
  54. connect_timeout = "15s"
  55. enable_pipelining = 100
  56. headers {"content-type" = "application/json"}
  57. method = "post"
  58. pool_size = 8
  59. pool_type = "random"
  60. request_timeout = "15s"
  61. resource_opts {
  62. auto_restart_interval = "60s"
  63. health_check_interval = "15s"
  64. inflight_window = 100
  65. max_buffer_bytes = "1GB"
  66. query_mode = "async"
  67. request_timeout = "15s"
  68. worker_pool_size = 4
  69. }
  70. ssl {enable = false, verify = "verify_peer"}
  71. url = "http://127.0.0.1:8080/webhook"
  72. }
  73. }
  74. }
  75. delayed {enable = false, max_delayed_messages = 2000}
  76. exhook {
  77. servers = [
  78. {
  79. auto_reconnect = "60s"
  80. enable = false
  81. failed_action = "deny"
  82. name = "test"
  83. pool_size = 16
  84. request_timeout = "5s"
  85. ssl {enable = false, verify = "verify_peer"}
  86. url = "http://127.0.0.1:8080"
  87. }
  88. ]
  89. }
  90. gateway {
  91. "lwm2m" {
  92. auto_observe = true
  93. enable_stats = true
  94. idle_timeout = "30s"
  95. lifetime_max = "86400s"
  96. lifetime_min = "1s"
  97. listeners {
  98. udp {
  99. default {
  100. bind = "5783"
  101. max_conn_rate = 1000
  102. max_connections = 1024000
  103. }
  104. }
  105. }
  106. mountpoint = ""
  107. qmode_time_window = "22s"
  108. translators {
  109. command {qos = 0, topic = "dn/#"}
  110. notify {qos = 0, topic = "up/notify"}
  111. register {qos = 0, topic = "up/resp"}
  112. response {qos = 0, topic = "up/resp"}
  113. update {qos = 0, topic = "up/update"}
  114. }
  115. update_msg_publish_condition = "contains_object_list"
  116. xml_dir = "etc/lwm2m_xml/"
  117. }
  118. }
  119. limiter {max_conn_rate = "2000/s"}
  120. listeners {
  121. ssl {
  122. default {
  123. acceptors = 16
  124. access_rules = ["allow all"]
  125. bind = "0.0.0.0:8883"
  126. enable_authn = true
  127. enabled = true
  128. max_connections = 5000000
  129. mountpoint = ""
  130. proxy_protocol = false
  131. proxy_protocol_timeout = "3s"
  132. ssl_options {
  133. cacertfile = "${EMQX_ETC_DIR}/certs/cacert.pem"
  134. certfile = "${EMQX_ETC_DIR}/certs/cert.pem"
  135. ciphers = []
  136. client_renegotiation = true
  137. depth = 10
  138. enable_crl_check = false
  139. fail_if_no_peer_cert = false
  140. gc_after_handshake = false
  141. handshake_timeout = "15s"
  142. hibernate_after = "5s"
  143. honor_cipher_order = true
  144. keyfile = "${EMQX_ETC_DIR}/certs/key.pem"
  145. ocsp {
  146. enable_ocsp_stapling = false
  147. refresh_http_timeout = "15s"
  148. refresh_interval = "5m"
  149. }
  150. reuse_sessions = true
  151. secure_renegotiate = true
  152. verify = "verify_none"
  153. versions = ["tlsv1.3", "tlsv1.2"]
  154. }
  155. tcp_options {
  156. active_n = 100
  157. backlog = 1024
  158. buffer = "4KB"
  159. high_watermark = "1MB"
  160. nodelay = true
  161. reuseaddr = true
  162. send_timeout = "15s"
  163. send_timeout_close = true
  164. }
  165. zone = "default"
  166. }
  167. }
  168. tcp {
  169. default {
  170. acceptors = 16
  171. access_rules = ["allow all"]
  172. bind = "0.0.0.0:1883"
  173. enable_authn = true
  174. enabled = true
  175. max_connections = 5000000
  176. mountpoint = ""
  177. proxy_protocol = false
  178. proxy_protocol_timeout = "3s"
  179. tcp_options {
  180. active_n = 100
  181. backlog = 1024
  182. buffer = "4KB"
  183. high_watermark = "1MB"
  184. nodelay = true
  185. reuseaddr = true
  186. send_timeout = "15s"
  187. send_timeout_close = true
  188. }
  189. zone = "default"
  190. }
  191. }
  192. ws {
  193. default {
  194. acceptors = 32
  195. access_rules = ["allow all"]
  196. bind = "0.0.0.0:8083"
  197. enable_authn = true
  198. enabled = true
  199. max_connections = 5000000
  200. mountpoint = ""
  201. proxy_protocol = false
  202. proxy_protocol_timeout = "3s"
  203. tcp_options {
  204. active_n = 100
  205. backlog = 1024
  206. buffer = "40KB"
  207. high_watermark = "1MB"
  208. nodelay = true
  209. reuseaddr = true
  210. send_timeout = "15s"
  211. send_timeout_close = true
  212. }
  213. websocket {
  214. allow_origin_absence = true
  215. check_origin_enable = false
  216. check_origins = "http://localhost:18083, http://127.0.0.1:18083"
  217. compress = false
  218. deflate_opts {
  219. client_context_takeover = "takeover"
  220. client_max_window_bits = 15
  221. mem_level = 8
  222. server_context_takeover = "takeover"
  223. server_max_window_bits = 15
  224. strategy = "default"
  225. }
  226. fail_if_no_subprotocol = true
  227. idle_timeout = "7200s"
  228. max_frame_size = "infinity"
  229. mqtt_path = "/mqtt"
  230. mqtt_piggyback = "multiple"
  231. proxy_address_header = "x-forwarded-for"
  232. proxy_port_header = "x-forwarded-port"
  233. supported_subprotocols = "mqtt, mqtt-v3, mqtt-v3.1.1, mqtt-v5"
  234. }
  235. zone = "default"
  236. }
  237. }
  238. wss {
  239. default {
  240. acceptors = 16
  241. access_rules = ["allow all"]
  242. bind = "0.0.0.0:8084"
  243. enable_authn = true
  244. enabled = true
  245. max_connections = 5000000
  246. mountpoint = ""
  247. proxy_protocol = false
  248. proxy_protocol_timeout = "3s"
  249. ssl_options {
  250. cacertfile = "${EMQX_ETC_DIR}/certs/cacert.pem"
  251. certfile = "${EMQX_ETC_DIR}/certs/cert.pem"
  252. ciphers = []
  253. client_renegotiation = true
  254. depth = 10
  255. fail_if_no_peer_cert = false
  256. handshake_timeout = "15s"
  257. hibernate_after = "5s"
  258. honor_cipher_order = true
  259. keyfile = "${EMQX_ETC_DIR}/certs/key.pem"
  260. reuse_sessions = true
  261. secure_renegotiate = true
  262. verify = "verify_none"
  263. versions = ["tlsv1.3", "tlsv1.2"]
  264. }
  265. tcp_options {
  266. active_n = 100
  267. backlog = 1024
  268. buffer = "4KB"
  269. high_watermark = "1MB"
  270. nodelay = true
  271. reuseaddr = true
  272. send_timeout = "15s"
  273. send_timeout_close = true
  274. }
  275. websocket {
  276. allow_origin_absence = true
  277. check_origin_enable = false
  278. check_origins = "http://localhost:18083, http://127.0.0.1:18083"
  279. compress = false
  280. deflate_opts {
  281. client_context_takeover = "takeover"
  282. client_max_window_bits = 15
  283. mem_level = 8
  284. server_context_takeover = "takeover"
  285. server_max_window_bits = 15
  286. strategy = "default"
  287. }
  288. fail_if_no_subprotocol = true
  289. idle_timeout = "7200s"
  290. max_frame_size = "infinity"
  291. mqtt_path = "/mqtt"
  292. mqtt_piggyback = "multiple"
  293. proxy_address_header = "x-forwarded-for"
  294. proxy_port_header = "x-forwarded-port"
  295. supported_subprotocols = "mqtt, mqtt-v3, mqtt-v3.1.1, mqtt-v5"
  296. }
  297. zone = "default"
  298. }
  299. }
  300. }
  301. log {
  302. console_handler {
  303. burst_limit {
  304. enable = true
  305. max_count = 10000
  306. window_time = "1s"
  307. }
  308. chars_limit = 10000
  309. drop_mode_qlen = 3000
  310. enable = true
  311. flush_qlen = 8000
  312. formatter = "text"
  313. level = "info"
  314. max_depth = 100
  315. overload_kill {
  316. enable = true
  317. mem_size = "30MB"
  318. qlen = 20000
  319. restart_after = "5s"
  320. }
  321. single_line = true
  322. supervisor_reports = "error"
  323. sync_mode_qlen = 100
  324. time_offset = "system"
  325. }
  326. file_handlers {
  327. default {
  328. burst_limit {
  329. enable = true
  330. max_count = 10000
  331. window_time = "1s"
  332. }
  333. chars_limit = "unlimited"
  334. drop_mode_qlen = 3000
  335. enable = false
  336. file = "${EMQX_LOG_DIR}/emqx.log"
  337. flush_qlen = 8000
  338. formatter = "text"
  339. level = "warning"
  340. max_depth = 100
  341. max_size = "50MB"
  342. overload_kill {
  343. enable = true
  344. mem_size = "30MB"
  345. qlen = 20000
  346. restart_after = "5s"
  347. }
  348. rotation {count = 10, enable = true}
  349. single_line = true
  350. supervisor_reports = "error"
  351. sync_mode_qlen = 100
  352. time_offset = "system"
  353. }
  354. }
  355. }
  356. mqtt {
  357. await_rel_timeout = "300s"
  358. exclusive_subscription = true
  359. idle_timeout = "15s"
  360. ignore_loop_deliver = true
  361. keepalive_backoff = 1
  362. max_awaiting_rel = 100
  363. max_clientid_len = 65535
  364. max_inflight = 32
  365. max_mqueue_len = 1000
  366. max_packet_size = "10MB"
  367. max_qos_allowed = 2
  368. max_subscriptions = 15
  369. max_topic_alias = 65535
  370. max_topic_levels = 128
  371. mqueue_default_priority = "lowest"
  372. mqueue_priorities = "disabled"
  373. "mqueue_store_qos0" = true
  374. peer_cert_as_clientid = "cn"
  375. peer_cert_as_username = "cn"
  376. response_information = ""
  377. retain_available = true
  378. retry_interval = "30s"
  379. server_keepalive = 15
  380. session_expiry_interval = "2h"
  381. shared_subscription = true
  382. strict_mode = true
  383. upgrade_qos = true
  384. use_username_as_clientid = true
  385. wildcard_subscription = true
  386. }
  387. retainer {
  388. backend {
  389. index_specs = [
  390. [1, 2, 3],
  391. [1, 3],
  392. [2, 3],
  393. [3]
  394. ]
  395. max_retained_messages = 120
  396. storage_type = "ram"
  397. type = "built_in_database"
  398. }
  399. enable = true
  400. max_payload_size = "1MB"
  401. msg_clear_interval = "2000ms"
  402. msg_expiry_interval = "10000ms"
  403. stop_publish_clear_msg = false
  404. }
  405. rule_engine {
  406. ignore_sys_message = true
  407. jq_function_default_timeout = "10s"
  408. rules {
  409. "rule_t7cl" {
  410. actions = ["webhook:test"]
  411. description = ""
  412. metadata {created_at = 1684222459298}
  413. sql = "SELECT\n *\nFROM\n \"t/#\""
  414. }
  415. }
  416. }
  417. slow_subs {
  418. enable = true
  419. expire_interval = "3000s"
  420. stats_type = "internal"
  421. threshold = "5000ms"
  422. top_k_num = 1000
  423. }
  424. sys_topics {
  425. sys_event_messages {
  426. client_connected = true
  427. client_disconnected = true
  428. client_subscribed = true
  429. client_unsubscribed = true
  430. }
  431. sys_heartbeat_interval = "30s"
  432. sys_msg_interval = "1m"
  433. }