具有CNAME问题的自定义子域

时间:2011-02-24 06:29:24

标签: dns cname

我正在努力掌握如何在我的应用中使用自定义域名。它的常见情况是拥有一个将用户分配到子域的应用程序,例如。 user.theapp.com并且他们想要使用CNAME,以便m.theirsite.com解析为该应用程序。似乎大多数服务要求您告诉他们您的自定义域是什么,并且只添加CNAME记录不起作用。步骤进行:

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

    提前谢谢。

1 个答案:

答案 0 :(得分:3)

我们的解决方案是使用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访问,因此请将其作为我的身份验证的有效主机名。”