Apache-2.2
配置 Apache 或 AWS 以支持允許每個客戶擁有自己的域名的 Rails 多租戶應用程序的最佳方法是什麼?
我正在建構一個允許多租戶的 Rails 3 SaaS 站點。
當客戶註冊時,他們會輸入他們自己的域名,例如,
example.com.
我需要example.com
指向我的 SaaS 應用程序並為他們提供他們的內容。我的問題如下:
我是否需要為每個使用自己域的客戶創建一個 Apache 虛擬主機?
CNAME 是否有更簡單的方法讓客戶指向我的伺服器的 IP 地址,然後通過一些擷取所有虛擬主機將請求轉發到我的應用程序?
我可以為客戶創建 CNAME 記錄,這樣他們就不必進行任何設置了嗎?
這是一個更適合亞馬遜網路服務的案例嗎?
對我對 dns 的理解的任何幫助、解釋或更正將不勝感激。我是一名開發人員,因此其中的伺服器操作部分有點模糊。
簡短的回答:
阿帕奇:
只需使用通用/萬用字元虛擬主機。使帳戶配置方式更容易。
域名解析:
只允許子域,並讓您的客戶使用他們現有的 DNS 提供商創建一個 CNAME。
AWS:
是否使用 AWS 不會影響手頭問題的答案。
長答案:
關於 Apache vHost 設置:
您有多種虛擬主機設置選項,包括:
,
你已經提到的兩個:
- 個人虛擬主機
- 一個包羅萬象的虛擬主機並在應用程序級別處理它
其他無數。LavaScornedOven
( http://httpd.apache.org/docs/2.2/vhosts/mass.html ) 連結的 Apache 文件是一個很好的資源。你應該如何具體地做到這一點超出了你的問題範圍,我將立即解釋原因。但是,您選擇哪種類型的 vHost 設置取決於您的前端應用程序和其他因素:
- 新客戶註冊流程是使用您開發的軟體還是罐頭?
- 如果是前者,哪種方法最容易在您的註冊過程中實施?
- 如果是後者,它是否已經提供了在註冊時創建虛擬主機的規定?如果是這樣,請使用軟體附帶的任何內容。
- 如果非客戶將他的域指向您的 IP,您希望發生什麼?在使用任何類型的“catchall”虛擬主機之前請考慮這一點。
- 最終,只有您可以確定哪種方法最適合您。
關於DNS設置:
首先,你絕對應該避免的事情:
- 區域頂點的 CNAME。即,
example.com
不應該是 CNAME。如果www.example.com
是的話也沒關係。您的選擇:
- 完全由客戶決定:
- 為客戶提供要使用的 IP 地址
- 告訴客戶為指向該 IP 的主機名創建 A 記錄
- (可選)向客戶提供創建 DNS 記錄的方法。
- 優點:
- 對你來說最簡單,至少是前期。
- 不需要託管任何人的 DNS
- 缺點:
- 客戶可能無法按照指示進行操作
- 當/如果您重新編號並且有一個新的 IP 地址時,預計會有大量支持票湧入 - 無論您提前發出多少警告。
- 讓客戶使用您的 NS 記錄:
- 告訴您的客戶通過其註冊商將其域的名稱伺服器更改為您的,或者如果他們正在使用子域,則使用 NS 記錄將該子域委託給您。
- (可選)向您的客戶提供如何執行此操作的詳細說明
- 確保您的註冊過程自動在您的 DNS 中創建相關區域
- 可選擇為您的客戶提供一個界面,以將其他記錄添加到他們的區域,例如 MX 等,或者自動提供它們並託管您客戶的電子郵件……
- 優點:
- 為您的客戶提供最簡單的方法。
- 避免整個擔心如果您將來必須重新編號會發生什麼
- 避免整個 CNAME 難題
- 缺點:
- 您現在成為 DNS 託管商和應用託管商
- 與您的註冊過程的額外集成步驟
- 只允許客戶使用子域(可能包括 www)
- 讓客戶為該子域創建一個 CNAME
- (可選)指導客戶如何創建從其裸域到子域的 HTTP 重定向。
- 優點:
- 可能是最簡單的方法。
- 因為許多其他託管應用程序服務使用這種方法,客戶更有可能熟悉它,因此不太可能把它搞砸。
- 與 NS 方法一樣,避免了重新編號期間的問題
- 缺點:
- 不允許客戶在您的服務中使用他們的裸域
- 我強烈推薦這種方法——唯一的原因是它是客戶通常習慣的。您可能需要根據具體情況考慮允許其他方法。