Ruby on rails 轨道/机架。。。Rack::ReverseProxy导致请求超时

Ruby on rails 轨道/机架。。。Rack::ReverseProxy导致请求超时,ruby-on-rails,heroku,rack,reverse-proxy,Ruby On Rails,Heroku,Rack,Reverse Proxy,我想我是疯了,不知道如何调试或者从这里到哪里去?!!任何指导都将不胜感激 问题: 开发环境:一切正常 生产:我收到“请求超时”错误 目标: 让“www.site.com/blog”在不重定向/更改浏览器URL的情况下显示“blog.site.com”中的内容 设置 www.site.com是Heroku上的Rails应用程序 blog.site.com上有WordPress吗 蓝宿主 所以我没有访问服务器配置的权限 方法 按照中的说明使用gem 实施 Gemfile gem "rack-

我想我是疯了,不知道如何调试或者从这里到哪里去?!!任何指导都将不胜感激

问题:

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

让“www.site.com/blog”在不重定向/更改浏览器URL的情况下显示“blog.site.com”中的内容

设置

  • www.site.com是Heroku上的Rails应用程序
  • blog.site.com上有WordPress吗 蓝宿主
所以我没有访问服务器配置的权限

方法

按照中的说明使用gem

实施

Gemfile

gem "rack-reverse-proxy", :require => "rack/reverse_proxy"
config.ru(就在运行AppName::Application之前)

config/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应用程序web.1--开始获取“/资源” 关于66.108.140.26/cpe-66-108-140-26.nyc.res.rr.com,请访问2013-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 队列=0等待=0ms连接=1ms服务=7ms状态=301字节=105

2013-03-05 05:54:49+00:00 heroku路由器--at=错误代码=H12 desc=“请求超时”方法=获取路径=/blog/ 主机=www.site.com fwd=“66.108.140.26/cpe-66-108-140-26.nyc.res.rr.com”dyno=web.1 队列=0ms等待=0ms连接=2ms服务=30000ms状态=503字节=0

调试

我试着在生产中打开调试

config/environments/production.rb

config.consider_all_requests_local = true
config.log_level = :debug
但是没有什么真正的表现只是一个普通的

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

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


有什么建议或想法吗?谢谢

我只是在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
也许有人能告诉我们这个假设是否属实:博客引擎经常在主页上重定向,这可能会破坏代理


祝你过得愉快

config.assets.debug=true
刚刚打开Rails资产调试,您的意思是在
production.rb
中启用调试日志记录吗?如果是这样,请使用
config.log\u level=:debug
@stuart谢谢。那是问题中的一个错误。我已经在上面改正了
config.log_level=:debug
是当前设置。代理在开发中为您加载页面需要多长时间?Heroku对此有一些信息,可能会有用。难道在Heroku部署的环境中代理这些页面需要更长的时间吗?这几乎是即时的。本地服务器日志不显示时间?但不到一秒钟。我想这可能只是因为它的生产需要30多秒,但生产速度慢一个数量级是正常的吗?@haley-你能详细说明一下你是如何在heroku上的nginx上获得反向代理的吗?我有相同的设置,遇到了相同的问题。
require 'rack/rewrite'
use Rack::Rewrite do
  rewrite   '/blog',  '/blog/home'
end