emqx开源版ssl相关咨询

emqx5.8.9 通过nginx做ssl加密后是否能够通过未加密的链接+1883端口访问,也就是是否能够同时支持加密和未加密的访问。

可以,同时支持。
关键点是把明文和 TLS 分成两个 listener:1883(明文)和 8883(TLS)。
如果你是 Nginx 做 TLS 终止,常见做法有两种:

  1. Nginx 监听 8883(TLS)并转发到 EMQX 1883(明文)
  2. EMQX 自己监听 8883(TLS),Nginx 只做四层转发或不经过 Nginx
    EMQX 5.8.9 示例:
listeners.tcp.default {
  bind = "0.0.0.0:1883"
}
listeners.ssl.default {
  bind = "0.0.0.0:8883"
  ssl_options {
    certfile = "${EMQX_ETC_DIR}/certs/server.pem"
    keyfile = "${EMQX_ETC_DIR}/certs/server.key"
  }
}

如果你要“同时走 Nginx”,就再在 Nginx stream 里分别开 1883/8883 两个 upstream;不要把 TLS 和非 TLS 混在同一个端口。