解决EMQX端口冲突的配置技巧

727 阅读2分钟

一、前言

        最近调试一批设备使用的MQTT协议通讯,这里就需要安装MQTT服务器,推荐使用EMQX,直接进官网安装即可,详细介绍看这篇文章:

blog.csdn.net/cnicfhnui/a…

安装完成后运行不起来,执行指令.\emqx.cmd console有这么个错误:[error] tcp:default failed to listen on 1883 - eacces Failed to start listener tcp:default on 0.0.0.0:1883,查询后发现是服务器其他程序占用了端口1883导致EMQX运行不起来,所以这里需要更改EMQX的端口绑定。

二、EMQX的默认端口以及策略

1、1883:MQTT TCP 监听端口,用于设备连接

2、8883:MQTT SSL 监听端口,提供加密设备的连接

3、8083:MQTT WebSocket 监听端口,允许通过Web浏览器连接

4、8084:MQTT WebSocket 监听端口,提供加密的Web浏览器连接

5、18083:EMQX Dashboard 管理控制台端口,用于监控贺管理MQTT服务器

三、修改端口的步骤

1、找到文件emqx.conf并打开,正常情况路径为:/ect/emqx/emqx.conf或/ect/emqx.conf

2、1883端口修改,找到listeners.tcp.default修改到空白端口,我这里是2883,如果没有listeners.tcp.default则添加新的即可,修改或添加内容如下:

listeners.tcp.default {
    # bind = "0.0.0.0:1883"
    bind = "0.0.0.0:2883"
    max_connections = 1024000
}

3、8883端口修改,同上:

listeners.ssl.default {
  #bind = "0.0.0.0:8883"
  bind = "0.0.0.0:9883"
  max_connections = 102400
  ssl_options {
    keyfile = "etc/certs/key.pem"
    certfile = "etc/certs/cert.pem"
  }
}

4、8083端口修改,同上:

listeners.ws.default {
  #bind = "0.0.0.0:8083"
  bind = "0.0.0.0:9083"
  max_connections = 102400
}

5、8084端口修改,同上:

listeners.wss.default {
  #bind = "0.0.0.0:8084"
  bind = "0.0.0.0:9084"
  max_connections = 102400
  ssl_options {
    keyfile = "etc/certs/key.pem"
    certfile = "etc/certs/cert.pem"
  }
}

6、18083端口配置,同上:

dashboard {
    listeners.http {
        #bind = 18083
        bind = 28083
    }
    default_username = "admin"
    default_password = "public"
}

7、 修改完成后重新运行服务器。

四、补充

        如果你照着这个方式修改,还没有成功,那应该就是安装的EMQX版本过低,建议更新。不更新的话就试试这样修改吧,不行的话也没办法了:

listener.tcp.external = 1883

listener.ssl.external = 8883
listener.ssl.external.keyfile = etc/certs/key.pem
listener.ssl.external.certfile = etc/certs/cert.pem

listener.ws.external = 8083

listener.wss.external = 8084
listener.wss.external.keyfile = etc/certs/key.pem
listener.wss.external.certfile = etc/certs/cert.pem

dashboard.listener.http = 18083