5

我想我在我的头上,无法弄清楚如何调试或从这里去哪里?!任何指导将不胜感激!

问题:

  • 开发环境:一切正常
  • 生产:我收到“请求超时”错误

目标:

让“www.site.com/blog”显示来自“blog.site.com”的内容,而无需重定向/更改浏览器 URL

设置

  • www.site.com 是 Heroku 上的 Rails 应用程序
  • blog.site.com 是 Bluehost 上的 WordPress

所以我无权访问服务器配置

方法

使用rack-reverse-proxy gem,如如何使用子目录而不是子域?通过jplewicke

执行

宝石文件

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

config.ru(就在运行AppName ::Application 之前)

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

配置/路由.rb

match "/blog" => redirect("/blog/")

结果/问题

它在我的机器上开发时效果很好,但是当我将它投入生产时它会超时。它不仅会超时,而且之后整个应用程序都会挂起或其他情况,即每个请求甚至 www.site.com 都会超时(在尝试 blog.site.com 之前有效)。大约 5-10 分钟后 www.site.com 再次工作,但 blog.site.com 超时。

日志

2013-03-05 05:54:19+00:00 app web.1 - - 2013 年开始为 66.108.140.26/cpe-66-108-140-26.nyc.res.rr.com 获取“/resource” -03-05 05:54:19 +0000

2013-03-05 05:54:19+00:00 heroku 路由器 - - at=info method=GET path=/blog host=www.site.com fwd="66.108.140.26/cpe-66-108-140- 26.nyc.res.rr.com" dyno=web.1 queue=0 wait=0ms connect=1ms service=7ms status=301 bytes=105

2013-03-05 05:54:49+00:00 heroku 路由器 - - at=error code=H12 desc="Request timeout" method=GET path=/blog/host=www.site.com fwd="66.108. 140.26/cpe-66-108-140-26.nyc.res.rr.com" dyno=web.1 queue=0ms wait=0ms connect=2ms service=30000ms status=503 bytes=0

调试

我尝试在生产中打开调试...

配置/环境/production.rb

config.consider_all_requests_local = true
config.log_level = :debug

但没有什么真正显示出来只是一个通用的,

应用程序错误...无法提供您的页面...再试一次...检查日志。

这是唯一有意义的事情,因为它正在开发中

关于做什么的任何建议或想法?谢谢!

4

1 回答 1

0

我只是在 rails 4 上设置了它。它在所有子目录上工作,使用:

use Rack::ReverseProxy do
  reverse_proxy_options preserve_host: true
  reverse_proxy '/blog', 'http://grav.somedomain.net/'
end

但是当访问没有子目录的 /blog 时,它正在响应永久重定向 (301)。

要解决此问题,只需将 /blog 重写为 /blog/home 并确保在您的博客中添加此别名链接!

require 'rack/rewrite'
use Rack::Rewrite do
  rewrite   '/blog',  '/blog/home'
end

也许有人可以告诉我们这个假设是否正确:博客引擎经常在主页上进行重定向,这可能会破坏代理。

有一个美好的!

于 2016-02-27T15:21:16.060 回答