【问题标题】:How to proxy a rails app in heroku with a WP blog under same domain如何使用同一域下的 WP 博客代理 Heroku 中的 Rails 应用程序
【发布时间】:2016-01-09 16:42:04
【问题描述】:

我有这个:

  • Heroku 上用于服务器 mydomain.com 的 Rails 应用程序
  • 另一个主机上的 WP 站点(我可以移动到 AWS .. 甚至 heroku)

我需要 mydomain.com/blog 为 WP 安装服务,我不希望它成为 SEO 的子域。

我的第一个想法是在 AWS 上的实例上设置 apache / nginx 作为反向代理。但是我担心这种设置不是最佳的,因为后端位于不同的服务中。

可以将heroku dyno 设置为代理吗?我知道没有办法修改heroku上的系统文件,比如创建一个自定义的nginx设置来做代理。我想知道是否有一些应用程序可以作为代理工作并且可以安装在 heroku 中,接下来还要在 heroku 中设置博客。

或者最好在 heroku 所在的同一区域 (us-west1) 中设置 AWS 实例作为代理,并在那里设置博客。

我对每种解决方案的优缺点以及最好的方法很感兴趣。

【问题讨论】:

    标签: wordpress apache amazon-web-services heroku nginx


    【解决方案1】:

    我用 Rails 和 WP 解决同样的问题已经有一段时间了。

    我的配置和结果:

    • Rails 应用托管在 heroku (www.sexycrets.com) 上
    • WP 博客托管在另一台服务器上 (blog.sexycrets.com)
    • 当浏览器请求www.sexycrets.com/blog 时,他会收到与浏览blog.sexycrets.com 时相同的html 页面,并且浏览器上的url 保持不变

      1. 我是如何做到的

    一个非常适合 SEO 的解决方案是使用 gem 作为反向代理(我使用来自 Github 的 drawwed/rack-reverse-proxy)。您可以将其配置为拦截路由“/blog”(和“/blog/”),以便每次向 Rails 请求 /blog 时,它都会通过后端调用加载您的 WP 站点并将其返回给用户。从用户浏览器的角度来看,这是一个完全透明的操作,除了引入的延迟。用户浏览器无法知道响应中返回的博客页面是从其他服务器加载的,浏览器上的 url 仍然是“www.sexycrets.com/blog”。

    • 优点:满足 SEO 要求
    • 缺点:由于反向代理在引入延迟方面性能不是很好

      1. 另类

    为了完整起见,我尝试的另一个选项是在加载 WP 的 heroku 上托管的静态页面中使用 iFrame。问题是,为了避免循环引用,WP 博客中的所有链接都必须指向 blog.sexycret.com(不是 www.sexycrets.com/blog),这在一定程度上违背了 SEO 的目的。

    • 优点:性能非常好,因为它甚至不使用 Rails:用户浏览器加载静态 /public/blog/index.html 页面,其中仅包含指向 WP 博客的 iFrame
    • 缺点:博客中的链接不是指向主域,而是指向3级域失败

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 2013-03-22
      • 2015-06-20
      • 2011-01-08
      • 2016-04-01
      相关资源
      最近更新 更多