我正在构build一个允许多租户的Rails 3 SaaS站点。
当客户注册时,他们把自己的域名,例如example.com. 我需要example.com指向我的SaaS应用程序并为其提供内容。
我的问题如下:
我是否需要为每个使用自己的域名的客户创build一个Apache虚拟主机?
有一个更简单的方法与CNAME的只是让客户指向我的服务器的IP地址,然后转发请求到我的应用程序通过一些捕获所有虚拟主机?
我能否为客户创buildCNAMElogging,以便他们不必进行任何设置?
这是否更适合amazon web services?
任何帮助或解释或更正我的理解dns将不胜感激。 我是一个开发人员,所以服务器操作的这一部分有点多云。
简答:
阿帕奇:
只需使用catchall /通配符虚拟主机。 使帐户configuration方式更容易。
DNS:
只允许子域名,并让您的客户创build一个与他们现有的DNS提供商的CNAME。
AWS:
使用AWS或不使用AWS将不会对答案产生影响。
长答案:
关于Apache vHost设置:
您有多种vhost设置选项,包括:
,
你select什么types的vHost设置取决于你的前端应用程序和其他因素:
- 新客户注册过程是否使用您开发的软件或jar装?
- 如果前者,哪种方法在你的注册过程中最容易实现?
- 如果是后者,它是否已经在注册时创build了虚拟主机? 如果是这样,请使用软件随附的任何软件。
- 如果非客户将他的域名指向您的IP,您希望发生什么? 在使用任何一种“catchall”虚拟主机之前,请考虑这一点。
- 最终,只有你可以确定哪种方法最适合你。
关于DNS设置:
首先,你应该避免的事情是:
- 区域顶点处的CNAME。 即
example.com不应该是CNAME。 如果www.example.com是可以的。
您的select:
- 完全取决于客户:
- 提供给客户一个IP地址使用
- 告诉客户为指向该IP的主机名创buildAlogging
- 可选地为客户提供创buildDNSlogging的指导。
- 优点:
- 对你来说最简单,至less是前期。
- 不需要托pipe任何人的DNS
- 缺点:
- 客户可能会遇到方向问题
- 当/如果您重新编号,并且有新的IP地址,预计支持门票大量涌入 – 无论您给予多less预先警告。
- 让客户使用您的NSlogging:
- 告诉您的客户将其域名服务器更改为注册商的域名服务器,或者如果他们使用子域名,则使用NSlogging将该子域名委派给您。
- 可选地为您的客户提供详细说明如何做到这一点
- 确保注册过程自动在DNS中创build相关区域
- 可select为您的客户提供一个界面,以将其他logging添加到他们的区域,如MX等,或自动提供他们和托pipe您的客户的电子邮件….
- 优点:
- 最简单的方法为您的客户。
- 如果将来需要重新编号,避免发生的后果
- 避免整个CNAME难题
- 缺点:
- 您现在已经成为DNS托pipe商以及应用托pipe商
- 额外的整合步骤与您的注册过程
- 只允许客户使用子域名(包括可能的www)
- 让客户为该子域创build一个CNAME
- (可选)指导客户如何创build从其裸露域到子域的HTTPredirect。
- 优点:
- 可能是最简单的方法。
- 因为许多其他托pipe的应用程序服务使用这种方法,客户更可能熟悉它,因此不太可能皇家搞砸了。
- 像NS方法一样,避免在重新编号时出现问题
- 缺点:
- 我强烈推荐这种方法 – 唯一的原因是客户通常习惯于这种方式。 您可能要考虑在个案基础上允许其他方法。