【问题标题】:How to create an SaaS Application?如何创建 SaaS 应用程序?
【发布时间】:2010-11-03 05:57:17
【问题描述】:

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

我正在使用 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 可以解决我的域注册问题。

【问题讨论】:

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


    【解决方案1】:

    子域很容易。在托管环境中,在大多数情况下,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,并在以后使用它来过滤数据/或选择数据库(如果您将使用“每个应用程序实例的数据库”架构)。

    祝你好运:)

    【讨论】:

    • 我运行一个具有类似架构的应用程序,它的工作方式与描述的一样。如果使用共享主机,请务必检查您是否可以设置通配符主机 (*.domain.tld)。
    • 我使用的是共享主机,不支持通配符子域。我可以升级我的帐户并申请通配符支持,但这似乎不值得。这可以以不使用通配符的方式完成吗?谢谢!
    • 如果您愿意将每个主机标头添加到您的网站(或有办法自动化它 - 再次检查您的主机的一些 API) - 那么是的,这是可能的。您的网站必须以某种方式响应所有地址的呼叫 - 通配符 DNS(或为“任何域”场景分配的 IP)将是最佳选择。如果您的主机没有为您提供此类选项,请更改它。
    • 如果您认真地开发这个,没有任何借口可以吝啬托管。您可以将所有时间都花在尝试解决功能受限的共享托管环境的限制上,或者您可以意识到它永远无法满足您的需求并立即退出。
    • 如果你喜欢挑战,我必须同意肖恩的观点。您可以花 20 英镑左右购买入门级虚拟专用服务器,然后自己管理整个事情。
    猜你喜欢
    • 2012-04-13
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 2011-02-12
    • 2020-01-14
    • 2011-09-20
    相关资源
    最近更新 更多