3

我在掌握如何在我的应用程序中使用自定义域时遇到了一些困难。这是拥有将用户分配到子域的应用程序的常见情况,例如。user.theapp.com 并且他们想使用 CNAME,因此 m.theirsite.com 解析为应用程序。似乎大多数执行此操作的服务都要求您告诉他们您的自定义域是什么,并且仅添加 CNAME 记录是行不通的。脚步:

  1. 用户创建一个帐户。
  2. 我们告诉他们他们可以在 yourstuff.theapp.com(即当前位置)上创建一个 CNAME 条目。
  3. 这是我的困惑。在 1&2 之后,我的自定义域仍然无法正常工作.. 所以一旦客户制作了 CNAME 记录并为我们提供了“m.theirsite.com”,我们用它做了什么特别的魔法来使这些网站“相同”?

先感谢您。

4

1 回答 1

4

我们的解决方案是使用 PHP/MySQL 来解决这个问题。像往常一样,您应该将外部域/子域 CNAME 分配给您的应用程序,但是正如您将看到的,CNAME 条目不需要是应用程序上的确切子域。接下来,您将在数据库中构建一个区域,用户可以在其中告诉您他们从哪个外部站点获得了 CNAME。此时,您将基于 HTTP 主机在网站上执行大部分身份验证,或者获取子域并将其用作客户端,或者检查 HTTP 主机是否在您的 CNAME 列表中,然后从那里引用客户端.

CNAME 所做的只是指向服务器位置,因此如果您在 apache 配置中使用通配符,则 foo.myapp.com 会解析到与 bar.myapp.com 相同的位置,但在应用程序中可以使用主机拉取出子域并找到客户端(“foo”和“bar”)。使用 CNAME 时,例如 m.mywebsite.com --cnamed--> foo.myapp.com,应用程序在 HTTP 主机中不再具有该客户端信息,正如我们所提到的,apache 通配符设置 (*.myapp. com) 只是扔掉子域.. 因此,客户端必须告诉我们“我将从 m.mywebsite.com 访问,因此也将其作为我的身份验证的有效主机名。”

于 2011-03-17T04:20:17.870 回答