Xmpp Ejabberd:从客户端连接时无法启动BOSH会话
今天我将一台服务器从Ubuntu 16.04升级到18.04,这还包括从ejabberd 16.01升级到18.01。现在我们从客户端(使用strophe.js)连接时遇到了问题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
非常感谢任何提示:-)更新:忘记下面的一切。请看巴德洛普的答案
对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