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

标签 ruby-on-rails ruby

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

最佳答案

有多种方法可以将 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文档描述了各种乐趣。

关于ruby-on-rails - 尝试在 RoR 应用程序上托管多个客户域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10345637/

相关文章:

ruby-on-rails - 如何解决 Gem 弃用问题?

ruby-on-rails - 如何使用 rvm 将我的 ruby​​ 1.9.2-p0 升级到最新的补丁级别?

ruby - 无法使用 require 加载文件

ruby-on-rails - rails +carrierwave 文件上传形式任意文件字段计数

ruby-on-rails - 使用 Ember 从服务器获取 JSON 数据

ruby-on-rails - 了解 Ruby 变量和符号?

ruby - 定义方法 : How to dynamically create methods with arguments

Ruby 代码中的 JavaScript

ruby-on-rails - 省略,跳过 redis 缓存存储,如果它不可用

ruby - gmail 的 omniauth oauth token 无效