从Rails应用程序外部托管的Rails应用程序中提供静态内容

时间:2019-02-22 13:43:30

标签: ruby-on-rails wordpress content-management-system

我有一个Rails应用程序,其中包含动态和静态页面的组合。对于静态页面,我想让我的合作伙伴(不是Rails开发人员)可以对其进行编辑,因此不希望进入git并直接在存储库中进行更改。

因此,某种CMS似乎是正确的答案。

但是出于维护原因-主要与升级过去使用过的CMS gem有关,我不想再在Rails应用程序中托管CMS。我还希望获得其他好处,例如更好的编辑工具和更轻松地访问托管CMS解决方案随附的模板。

我当时想我可以做一些事情,例如将静态内容托管在诸如Wordpress或Squarespace之类的东西上,然后以某种方式从Rails应用程序中提供该静态内容。如果我使用单独的子域,我认为这可能很容易,但是我想将所有内容保留在一个www子域下。

Rails应用程序当前托管在Heroku上,并且我将Google域用于DNS。

我希望我清楚要达到的目标以及原因。有人对如何实现这一目标有任何建议吗?

1 个答案:

答案 0 :(得分:0)

这可以通过在应用程序前面使用nginx反向代理来完成-您可以将不同的路径代理到不同的应用程序/主机,例如:

server {
   server_name your_main_host.com;

   # other nginx vhost config..

   location /cms_prefix/ {
      proxy_set_header Host host_that_cms_expects.com;
      proxy_pass http://your_cms_host.url/;
   }

   location / {
      proxy_set_header Host your_main_host.com;
      proxy_pass http://your_rails_upstream;
   }
}

尚未将此方法部署到heroku,但是应该可以通过在“独奏模式”中使用nginx buildpack(实际上您需要“代理模式”,但要使用自定义配置)来实现