单个应用程序下的应用程序的多个客户实例。
我需要通过传递不同的URL来允许多个用户连接到我的Apache Web服务器: customer1.myhost.com company1.myhost.com company2.myhost.com 等
我希望我的Apache服务器执行的操作是传递未定向到某个现有主机列表的所有请求 (比如trac.myhost.com和https://myhost.com)到我的Rails应用程序,通过设置RequestHeader来识别所请求的主机,如:
RequestHeader“INSTANCE_NAME”= customer1 #for customer1.myhost.com
感谢您的帮助!
Ps。:最终目标是提供软件切片作为服务,但让所有这些客户在1个应用程序下运行。每个客户不是1个应用程序。
答案 0 :(得分:2)
使用标准的VirtualHost配置,您可以执行以下操作:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName app.example.com
ServerAlias *.example.com
DocumentRoot /web/app.example.com/public
</VirtualHost>
这将捕获所有尚未被其他VirtualHost条目捕获的请求。
当您的应用程序收到请求时,您将使用提供的主机名设置请求变量。这适用于任何ActionController:
request.host
从那里你可以在某种before_filter中加载适当的数据,通常如下所示:
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
只要客户端正确填充了主机名,就会在每次加载页面时找到它们。