如何允许客户子域网站使用自己的域

时间:2010-07-15 14:47:19

标签: ruby-on-rails dns subdomain

我有一个rails应用程序,客户注册并获得这样的自定义子域网站/网址:

  • customer1.myapp.com
  • customer2.myapp.com
  • customer3.myapp.com

我需要采取哪些步骤才能让客户使用自己的注册域名,以便他们的域名指向我的应用?

因此,在上面的例子中,如果“customer1”拥有“customer1.com” - 我如何设置我的应用程序,以便将任何对“customer1.com”的请求发送到“customer1.myapp.com”?另外,我的客户需要做什么呢?

感谢。

1 个答案:

答案 0 :(得分:7)

您的客户需要为其域名设置DNS,以便将其指向您的地址或将其中的一部分指向您的地址。这可能很难协调,特别是如果您托管服务的服务器的地址可能会不时更改。将客户的子域路由到子域更加容易。

您还需要一个查找表,将客户的域映射到客户的帐户。这通常表达为:

before_filter :load_customer_from_host

def load_customer_from_host
  # Strip "www." from host name to search only by domain.
  hostname = request.host.sub(/^www\./, '')

  @customer = Customer.find_by_host!(hostname)
rescue ActiveRecord::RecordNotFound
  render(:partial => 'customer_not_found', :layout => 'application', :status => :not_found)
end

假设您的客户模型的“主机”字段设置为“customer1.myapp.com”或“customer1.com”,与主机字段匹配。

设置应用程序时,您需要具有响应所有任意域名的虚拟主机配置。如果它是唯一托管的站点,这很容易做到,因为这是默认行为。如果您在共享主机上执行此操作,则可能必须专门为每个客户域配置别名,这可能会造成麻烦。