如何创建SaaS应用程序?

时间:2009-06-16 06:53:35

标签: zend-framework web-applications dns saas wildcard-subdomain

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

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

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

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

更新:感谢您的建议!我决定咬紧牙关并升级我的托管计划以使用通配符子域。它比我想象的便宜!我还发现了域名经销商程序,比如opensrs.com,它们有自己的API。我认为使用其中一个API将是我的域名注册问题的解决方案。

1 个答案:

答案 0 :(得分: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,并在以后用于过滤数据/或选择数据库,如果您使用“每个应用程序实例的数据库”模式。
祝你好运:)