【问题标题】:Multiple Heroku apps on a single domain单个域上的多个 Heroku 应用程序
【发布时间】:2013-10-01 14:41:51
【问题描述】:

我很确定这个问题的答案是“不可能”,但我想我会在最后一次检查一下:

我正在将一些 Rails 应用程序迁移到 Heroku。现在,它们的组织方式(按 URL 方式)是:

到目前为止,我所阅读的所有内容都表明这在 Heroku 上是不可能的:每个应用程序必须有自己的子域(例如 site1.example.com、site2.example.com)。

我的客户不想更改 URL 结构(实际上可能有一些争论;我已经阅读了一些资料,说路径与子域更适合 SEO)。

我是否正确,这在 Heroku 上是不可能

【问题讨论】:

  • 尝试使用子域 site1.example.comsite2.example.com 进行操作,然后您只需将 difenet cnames 指向正确的 heroku 应用程序
  • 您可以使用反向代理、CDN 或 routepath.app(免责声明:我制作了后者)

标签: ruby-on-rails heroku


【解决方案1】:

这在 Heroku 和 Rails 中使用 Rack Reverse Proxy 是可能的。我目前正在分别在 /blog 和 /kb 运行 Wordpress 博客和知识库。出于 SEO 的目的,我不希望它们出现在子域中。

Rails 配置

添加到 Gemfile:

gem "rack-reverse-proxy", :require => "rack/reverse_proxy"

现在我们希望 /blog 和 /blog/ 从 Rails 应用程序定向到 Wordpress 实例。

在您运行应用程序之前将其添加到您的 config.ru:

use Rack::ReverseProxy do
  reverse_proxy(/^\/blog(\/.*)$/,
    'http://CHANGEME.herokuapp.com$1',
    opts = {:preserve_host => true})
end

在 config/routes.rb 添加一个路由:

match "/blog" => redirect("/blog/"), via: :all

原文参考:http://rywalker.com/setting-up-a-wordpress-blog-on-heroku-as-a-subdirectory-of-a-rails-app-also-hosted-on-heroku

【讨论】:

    【解决方案2】:

    我可能迟到了,但它可能的。 how we did it at Pilot的短版:

    我们还有一个运行 HAProxy 的实例。它负责根据 URL 将请求路由到相应的 Heroku 应用程序。 ✌️

    【讨论】:

      【解决方案3】:

      最好的办法是将 Rails 应用程序转变为 Rails 引擎:

      http://pivotallabs.com/migrating-from-a-single-rails-app-to-a-suite-of-rails-engines/

      然后使用您描述的 URL 安装每个引擎。

      当然,如果您的应用非常庞大且复杂,这可能会很棘手。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-08
        • 1970-01-01
        • 2017-10-13
        • 2014-05-24
        • 2012-10-30
        相关资源
        最近更新 更多