2

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

4

1 回答 1

0

有多种方法可以将 Rails 配置为使用config/routes.rb域作为.命名空间。我想您可以为 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文档描述了各种各样的乐趣。

于 2012-04-28T00:04:30.770 回答