You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为ejabberd配置SRV记录,实现通过example.com访问?

解决ejabberd跨域名连接问题的方案

核心问题原因

你遇到的“该服务器不负责此域名”错误,本质是ejabberd不知道需要处理example.com这个域名的XMPP请求。即使SRV记录把请求导向了server.example.com,客户端连接后会向服务器确认是否托管目标域名,只有当ejabberd的宿主域名列表里包含example.com时,才会正常响应。

具体解决步骤

  • 必须将example.com加入ejabberd的宿主域名列表
    添加example.com到ejabberd.yml的hosts配置项中,比如:

    hosts:
      - "server.example.com"
      - "example.com"
    

    这不等同于创建新服务器,只是让同一台ejabberd服务器同时处理多个域名的XMPP业务,所有用户和资源都是共享的。

  • 解决多域名证书问题
    你不需要在example.com上运行服务器来申请证书,用Let's Encrypt的两种方式即可解决:

    1. DNS-01挑战:通过在example.com的DNS记录中添加一条TXT验证记录来完成证书申请,支持申请包含example.com和server.example.com的SAN(多域名)证书,无需任何HTTP服务。
    2. HTTP-01挑战:如果能控制example.com的DNS解析,把它的HTTP请求(80端口)转发到server.example.com的80端口,Let's Encrypt的验证请求就能被正常处理,同样可以申请多域名证书。
      拿到证书后,在ejabberd配置中指定该证书文件,就能同时覆盖两个域名的SSL需求。
  • 验证配置
    重启ejabberd服务后,用Conversations再次尝试连接example.com,此时服务器会正确响应域名托管请求,同时证书验证也能通过。

内容的提问来源于stack exchange,提问作者nanitook

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 13:25:38