![CNAME 帮助 - SaaS 的通配符 DNS](https://linux22.com/image/544909/CNAME%20%E5%B8%AE%E5%8A%A9%20-%20SaaS%20%E7%9A%84%E9%80%9A%E9%85%8D%E7%AC%A6%20DNS.png)
我正在尝试弄清楚如何允许我的用户使用 CNAME 作为他们唯一的通配符域。(user1.wlapi.com)等
我在这里读到:https://stackoverflow.com/questions/5101195/custom-subdomain-with-cname-problem
使用通配符 DNS 进行 CNAME 可能不是最好的选择,所以我需要另一种方法来识别用户,这很好。我可以通过一些数据库工作来做到这一点。
但是,我似乎无法让 CNAME 与 user1.wlapi.com 或 wlapi.com 一起工作
它什么也不做...只是加载一个空白屏幕。
问题:
我必须做什么才能让 CNAMES 在我的服务器上工作?(我正在使用 MediaTemple,但如果有更简单的主机,我可以切换)
我读了一些关于 VitrualHost 的 .conf 文件的内容,但这对我来说没有任何意义......
更新
我成功了!我升级到具有唯一 IP 的专用服务器,这似乎有效。
通配符 DNS 不起作用,但我可以使用 HTTP 主机来查找用户。:)
答案1
主要有两种方法。为了举例说明,我们假设你的公司名称是example.org
:
a)您域名下的每个帐户子域名:所有用户都会获得您域名下的完全限定域名,即<userid>.example.org
。<nextuser>.example.org
我会使用一个捕获所有 A 记录来做到这一点:
$ORIGIN example.org.
@ IN A 1.2.3.4
www IN CNAME example.org.
* IN A 5.6.7.8 # This one
b) 转到专用网关的“虚荣域名”:假设您想为 en 用户提供在自己的域中设置 FQDN 的选项,例如shop.userdomain.com
。在这种情况下,我将专门设置一个网关服务器来处理此问题,并让用户为该网关创建 CNAME。例如:
$ORIGIN example.org.
@ IN A 1.2.3.4
www IN CNAME example.org.
gateway IN A 5.6.7.8 # This one
gateway.example.org
..并且您的最终用户必须创建指向此示例中的CNAME 。
笔记:在上述两种情况下,我都使用了 A 记录,但如果更方便,您也可以使用 CNAME。并且您的 5.6.7.8 服务器必须查看传入的 HTTP 标头并采取适当的行动,即您的 Web 应用程序编程需要根据每个请求正确处理用户帐户。
答案2
在 Windows 中的 IIS 中,您可以使用主机标头。在 Linux 中,我相信它被称为虚拟主机,正如您所说的。以下链接对此进行了解释:
答案3
正如其他人所说这是一个两步过程,涉及您的内容 DNS 服务器和您的内容 HTTP 服务器。