Xmpp Ejabberd:从客户端连接时无法启动BOSH会话

Xmpp Ejabberd:从客户端连接时无法启动BOSH会话,xmpp,ejabberd,ubuntu-18.04,Xmpp,Ejabberd,Ubuntu 18.04,今天我将一台服务器从Ubuntu 16.04升级到18.04,这还包括从ejabberd 16.01升级到18.01。现在我们从客户端(使用strophe.js)连接时遇到了问题 非常感谢任何提示:-)更新:忘记下面的一切。请看巴德洛普的答案 对ejabberd进行了完整的重新安装: apt-get --purge autoremove ejabberd (确保/etc/ejabberd为空) 这里是ejabberd.yml的相关部分。我没有改变其他任何事情: hosts: - "loc

今天我将一台服务器从Ubuntu 16.04升级到18.04,这还包括从ejabberd 16.01升级到18.01。现在我们从客户端(使用strophe.js)连接时遇到了问题


非常感谢任何提示:-)

更新:忘记下面的一切。请看巴德洛普的答案


对ejabberd进行了完整的重新安装:

apt-get --purge autoremove ejabberd
(确保/etc/ejabberd为空)

这里是ejabberd.yml的相关部分。我没有改变其他任何事情:

hosts:
  - "localhost"
  - "chat3.myserver.com" <- the public domain

listen:
  - 
    port: 5222
    ...
  -
    port: 5269
    ...
  -
    ##port: 5280
    port: 8088      <- use any port you like
    ip: "127.0.0.1" <- listen only on localhost
    module: ejabberd_http
    request_handlers:
      "/ws": ejabberd_http_ws
      "/bosh": mod_bosh
      "/api": mod_http_api
    ##  "/pub/archive": mod_http_fileserver
    web_admin: true
    ## register: true
    ## captcha: true
    tls: false  <- no need for tls on localhost
    protocol_options: 'TLS_OPTIONS'

auth_method: sql
sql_type: mysql
sql_server: "server"
sql_database: "ejabberd_live"
sql_username: "ejabberd"
sql_password: "secret"

acl:
  admin:
  user:
    - "": "localhost"
    - "admin": "chat3.myserver.com"
当然,您还需要获取mysql数据库模式。。。等等


我不知道是什么导致了连接错误。我猜ejabberd的升级有点问题。至少我很确定这不是一个已知的bug。我在互联网上爬行了4个小时,但在这个版本的ejabberd(18.01)上找不到类似的东西。而且错误信息——即使在日志级别5下——也非常模糊。如果这是一个配置错误,我相信错误消息会更加具体

更新:忘记下面的一切。请看巴德洛普的答案


对ejabberd进行了完整的重新安装:

apt-get --purge autoremove ejabberd
(确保/etc/ejabberd为空)

这里是ejabberd.yml的相关部分。我没有改变其他任何事情:

hosts:
  - "localhost"
  - "chat3.myserver.com" <- the public domain

listen:
  - 
    port: 5222
    ...
  -
    port: 5269
    ...
  -
    ##port: 5280
    port: 8088      <- use any port you like
    ip: "127.0.0.1" <- listen only on localhost
    module: ejabberd_http
    request_handlers:
      "/ws": ejabberd_http_ws
      "/bosh": mod_bosh
      "/api": mod_http_api
    ##  "/pub/archive": mod_http_fileserver
    web_admin: true
    ## register: true
    ## captcha: true
    tls: false  <- no need for tls on localhost
    protocol_options: 'TLS_OPTIONS'

auth_method: sql
sql_type: mysql
sql_server: "server"
sql_database: "ejabberd_live"
sql_username: "ejabberd"
sql_password: "secret"

acl:
  admin:
  user:
    - "": "localhost"
    - "admin": "chat3.myserver.com"
当然,您还需要获取mysql数据库模式。。。等等


我不知道是什么导致了连接错误。我猜ejabberd的升级有点问题。至少我很确定这不是一个已知的bug。我在互联网上爬行了4个小时,但在这个版本的ejabberd(18.01)上找不到类似的东西。而且错误信息——即使在日志级别5下——也非常模糊。如果这是一个配置错误,我相信错误消息会更加具体

配置中的问题似乎是您删除了ejabberd_c2s侦听器。它是必需的,您可以在错误消息中看到它。因此,问题可以通过添加它来解决,至少在我的情况下,例如:

listen:
  -
    port: 5222
    module: ejabberd_c2s
  - 
    port: 8088
    ip: "127.0.0.1"
    module: ejabberd_http
    request_handlers:
      "/bosh": mod_bosh
    web_admin: true
    tls: false

ejabberd文档中没有提到这样的要求,所以我现在添加了它。

配置中的问题似乎是您删除了ejabberd_c2s侦听器。它是必需的,您可以在错误消息中看到它。因此,问题可以通过添加它来解决,至少在我的情况下,例如:

listen:
  -
    port: 5222
    module: ejabberd_c2s
  - 
    port: 8088
    ip: "127.0.0.1"
    module: ejabberd_http
    request_handlers:
      "/bosh": mod_bosh
    web_admin: true
    tls: false

ejabberd文档中没有提到这样的要求,所以我现在添加了它。

感谢您澄清这一点。。。我很确定我的旧配置只在8088上监听,但显然它肯定也包含了5222。我真的需要学习如何阅读这些神秘的错误信息。谢谢你澄清。。。我很确定我的旧配置只在8088上监听,但显然它肯定也包含了5222。我真的需要学习如何阅读这些神秘的错误信息。
ProxyPass /http-bind/ http://127.0.0.1:8088/bosh
ProxyPassReverse /http-bind/ http://127.0.0.1:8088/bosh
ProxyPass /admin/ http://127.0.0.1:8088/admin/
ProxyPassReverse /admin/ http://127.0.0.1:8088/admin/
listen:
  -
    port: 5222
    module: ejabberd_c2s
  - 
    port: 8088
    ip: "127.0.0.1"
    module: ejabberd_http
    request_handlers:
      "/bosh": mod_bosh
    web_admin: true
    tls: false