Rails / Rack ... Rack :: ReverseProxy导致请求超时

时间:2013-03-05 06:10:31

标签: ruby-on-rails heroku rack reverse-proxy

我想我已经过头了,无法弄清楚如何调试或从哪里开始?!!任何指导将不胜感激!

问题:

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

目标:

让“www.site.com/blog”显示“blog.site.com”中的内容,而不会重定向/更改浏览器网址

设置

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

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

方法

rack-reverse-proxy How can I use a subdirectory instead of a subdomain?中所述使用jplewicke gem

实施

的Gemfile

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

配置/ routes.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-03-05 66.108.140.26/cpe-66-108-140-26.nyc.res.rr.com   05:54:19 +0000

     

2013-03-05 05:54:19 + 00:00 heroku router - - 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 router - - at = error code = H12   desc =“请求超时”方法= GET路径= / blog /   主机= 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

但没有任何真正只显示通用的

  

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

这是唯一有意义的,因为它在开发中工作

有关该怎么做的任何建议或想法?谢谢!

1 个答案:

答案 0 :(得分:0)

我只是在rails 4上设置它。它使用的是所有子目录:

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

但在访问没有子目录的博客时它正在响应永久重定向(301)。

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

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

也许有人可以告诉我们这个假设是否属实:博客引擎经常在家中重定向可能会破坏代理。

有个好人!

相关问题