Ruby on rails Rails下软件即服务的Apache RequestHeader

Ruby on rails Rails下软件即服务的Apache RequestHeader,ruby-on-rails,apache,saas,Ruby On Rails,Apache,Saas,应用程序的多个客户实例,位于单个应用程序下 我需要的是允许多个用户通过传递不同的url连接到我的Apache Web服务器,如: customer1.myhost.com company1.myhost.com company2.myhost.com 等等 我希望我的Apache服务器做的是将所有未定向到某个现有主机列表的请求传递给该列表 (如trac.myhost.com和)转到我的Rails应用程序,通过设置RequestHeader来标识请求的主机,类似于: 对于customer1.myh

应用程序的多个客户实例,位于单个应用程序下

我需要的是允许多个用户通过传递不同的url连接到我的Apache Web服务器,如: customer1.myhost.com company1.myhost.com company2.myhost.com 等等

我希望我的Apache服务器做的是将所有未定向到某个现有主机列表的请求传递给该列表 (如trac.myhost.com和)转到我的Rails应用程序,通过设置RequestHeader来标识请求的主机,类似于:

对于customer1.myhost.com,RequestHeader“INSTANCE_NAME”=customer1

谢谢你的帮助


注:最终目标是将软件片作为服务提供,但让所有这些客户都在一个应用程序下运行。不是每个客户一个应用程序。

使用标准VirtualHost配置,您可以执行以下操作:

NameVirtualHost *:80

<VirtualHost *:80>
  ServerName app.example.com
  ServerAlias *.example.com

  DocumentRoot /web/app.example.com/public
</VirtualHost>
从那里,您可以在某种类型的before_过滤器中加载适当的数据,通常是这样做的:

before_filter :load_client

def load_client
  @client = Client.find_by_hostname!(request.host)
rescue ActiveRecord::RecordNotFound
  render(:partial => 'client_not_found', :status => :not_found)
end
只要客户端正确填充了主机名,就会在每次页面加载时找到它们

before_filter :load_client

def load_client
  @client = Client.find_by_hostname!(request.host)
rescue ActiveRecord::RecordNotFound
  render(:partial => 'client_not_found', :status => :not_found)
end