尝试在RoR应用程序上托管多个客户域

时间:2012-04-27 06:13:24

标签: ruby-on-rails ruby

我试图允许在类似shopify的rails web应用程序上的单个ruby上托管多个客户域。将需要SSL证书,因此需要多个IP。我该怎么做呢?我应该创建一个功能来在Apache中为每个域创建新的VirtualHosts吗?

1 个答案:

答案 0 :(得分:0)

有各种方法可以配置Rails以使用域作为config/routes.rb的一部分,但我最近用于HTTP的一种方法是将重写应用为Rack中间件,使用{{3将代码作为初始化程序插入为方便起见,并指向命名空间。我想你可以使用类似的HTTPS起点。

添加到Gemfile

gem 'rack-rewrite'

添加为初始化程序,在需要它之前加载,例如config/initializers/0_rack_rewrite.rb

Unshopify::Application.config.middleware.insert_before(Rack::Lock, Rack::Rewrite) do
  rewrite %r{.*}, "/unshopify$&", :not => %r{/assets.*}, :host => "unshopify.example.com"
end

添加到config/routes.rb

namespace :unshopify, :path => 'unshopify' do
  resource :statics, :only => [:home]

  root :to => 'statics#home'
end

如果它与命名空间的默认值相同,则不需要:path

当然,您可以将重写指向同一名称空间,或根本不指定名称空间,然后根据其他方法执行逻辑。 rack-rewrite文档描述了各种乐趣。