【问题标题】:Trying to host multiple customer domains on RoR app尝试在 RoR 应用上托管多个客户域
【发布时间】:2012-04-27 06:13:23
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    有多种方法可以将 Rails 配置为使用域作为 config/routes.rb 的一部分,但我最近用于 HTTP 的一种方法是将重写应用为 Rack 中间件,使用 rack-rewrite gem 插入代码作为初始化程序方便,并指向一个命名空间。我想您可以为 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 文档描述了各种乐趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多