8

我不知道还能怎么说,所以我只是解释一下我的理想场景,希望你能向我解释如何实现它......

我正在使用 Zend 框架创建一个应用程序,该应用程序将由 DreamHost 托管。该应用程序将托管在其自己的域中(即 example-app.com)。基本上,用户应该能够注册,获得他们自己的域 sampleuser.example-app.com 或 example-app.com/sampleuser 指向的,看起来像他们自己的应用程序实例,这实际上是一个单一的实例根据 url 提供不同的内容。

最终,我希望我的用户能够创建他们自己的指向 sampleuser.example-app.com 的域(如 foobar.com),这样 foobar.com 的访问者就不会注意到该站点确实在提供服务来自 example-app.com。

我不知道如何做大部分的事情。这个过程是如何工作的?我是否需要用 Apache 做一些时髦的事情,或者这可以用第三方主机来完成,比如 DreamHost?

更新:感谢您的建议!我决定硬着头皮升级我的托管计划以利用通配符子域。它比我预期的便宜!我还发现了具有自己 API 的域经销商程序,例如 opensrs.com。我认为使用这些 API 之一将解决我的域注册问题。

4

1 回答 1

10

子域很容易。在托管环境中,在大多数情况下,apache 被配置为捕获主域下的所有子域调用。您只需要定义通配符 DNS,因此 *.example-app.com 指向您服务器的 IP。然后您的网站应该捕获对这些子域名的所有调用。

其他领域很难。它们需要在 Apache 中配置为虚拟主机 - 请参阅http://httpd.apache.org/docs/1.3/vhosts/name-based.html - 这意味着很难自动化,尤其是在托管环境中 - 除非您的主机为您提供了一些 API 来做到这一点(简单且更可行的方案是为您的网站分配一个独特的 IP,然后您可以使用 Apache 捕获所有内容 - 可能可以使用您的主机控制面板进行配置或解决框 - 然后只需将 DNS 服务器指向您的 IP)。

然后,在您将 Apache 配置为将所有必要的调用指向您的网站后,您可以通过以下方式区分每个子域的应用程序分区:

  • 从 HTTP 请求中获取主机头
  • 有一个包含您服务的所有子域名的数据库表
  • 查找该数据库表以确定实例或用户 ID 并稍后将其用于过滤数据/或选择数据库,如果您将使用“每个应用程序实例的数据库”模式。

祝你好运 :)

于 2009-06-16T07:08:20.383 回答