单个域上的多个Heroku应用程序
我很确定答案是“不可能”,但我想我最后一次检查:
我正在将一些Rails应用程序迁移到Heroku。 现在,它们的组织方式是URL,它是:
- http://example.com/site1 – 由app1提供服务
- http://example.com/site2 – 由app2提供服务
到目前为止我读过的所有内容都说Heroku上不可能:每个应用程序都必须有自己的子域(例如site1.example.com,site2.example.com)。
我的客户不想改变URL结构(实际上可能有一些争论;我已经阅读了几个来源,说路径与子域更适合SEO)。
我是否正确,这在Heroku上是不可能的?
Heroku和Rails使用Rack Reverse Proxy可以实现这一点。 我目前正在分别在/ blog和/ kb上运行Wordpress博客和知识库。 出于搜索引擎优化的目的,我不希望它们在子域名上。
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
我可能迟到了派对,但这是有可能的。 我们如何在Pilot上做到这一点的简短版本:
我们有一个运行HAProxy的附加实例。 它负责根据URL将请求路由到相应的Heroku应用程序。 ✌️
最好的办法是将Rails应用程序转换为Rails引擎:
http://pivotallabs.com/migrating-from-a-single-rails-app-to-a-suite-of-rails-engines/
然后使用您描述的URL安装每个引擎。
当然,如果您的应用程序非常庞大且复杂,这可能会非常棘手。