8

我不知道該怎麼說,所以我只是想解釋我的理想場景,希望你能向我解釋如何實現它...如何創建SaaS應用程序?

我正在用Zend創建一個應用程序將與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中的一個將成爲我的域名註冊問題的解決方案。

回答

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後,指向您網站上的所有必要的調用,您可以differnetiate每個子域應用程序分區這樣:

  • 得到HTTP請求的主機頭
  • 有包含您所服務的所有子域名的數據庫表
  • 對該數據庫表進行查找以確定實例或用戶標識並稍後用於篩選數據/或選擇數據庫,如果您將使用「數據庫每個應用程序實例「架構。

祝你好運:)

+1

我運行一個類似的架構的應用程序,並描述它的作品。如果使用共享主機,請務必檢查是否可以設置通配符主機(* .domain.tld)。 – 2009-06-16 07:45:04