2013-03-05 8 views
5

Ich glaube, ich bin über meinen Kopf und kann nicht herausfinden, wie man debuggen oder wohin von hier gehen? !! Jede Anleitung würde sehr geschätzt werden!Rails/Rack ... Rack :: ReverseProxy verursachende Anfrage Timeout

Problem:

  • Development Environment: alles funktioniert
  • Produktion: I "Request Timeout" Fehler

Tor erhalten:

Have „www.site .com/blog "zeige Inhalte von" blog.site.com "ohne eine Weiterleitung/Ändern der Brauen er URL

Setup-

  • www.site.com ist eine Rails App auf Heroku
  • blog.site.com ist Wordpress auf Bluehost

, damit ich nicht Zugriff auf Serverkonfiguration haben

Ansatz

Verwenden rack-reverse-proxy gem als

Gemfile von jplewicke

Implementierung in How can I use a subdirectory instead of a subdomain? beschrieben

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

config.ru (kurz vor Lauf AnwName :: Application)

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

config/routes.rb

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

Ergebnisse/Problem

Es funktioniert großartig in der Entwicklung auf meiner Maschine, aber wenn ich es in der Produktion es mal aus. Es kommt nicht nur zu einer Auszeit, sondern hinterher wird die gesamte Anwendung gehängt oder etwas, d. H. Jede Anfrage läuft sogar auf www.site.com (was vor dem Versuch von blog.site.com funktioniert hat). Nach ca. 5-10min funktioniert www.site.com wieder aber blog.site.com läuft ab.

Logs

2013-03-05 05: 54: 19 + 00: 00 app web.1 - - Der Anfang "/ resource" für 66.108.140.26/cpe-66-108 -140-26.nycres.rr.com am 2013-03-05 05:54:19 +0000

2013-03-05 05: 54: 19 + 00: 00 heroku router - - at = info methode = GET pfad =/blog host = www.site.com fwd = "66.108.140.26/cpe-66-108-140-26.nyc.res.rr.com "dyno = web.1 warteschlange = 0 warten = 0 ms verbinden = 1ms service = 7ms status = 301 bytes = 105

2013- 03-05 05: 54: 49 + 00: 00 heroku router - - bei = Fehlercode = H12 desc = "Anfrage Timeout" Methode = GET Pfad =/blog/ host = www.site.com fwd = "66.108 .140.26/cpe-66-108-140-26.nyc.res.rr.com“Dyno web.1 = queue = 0ms 0ms = wait = 2ms Dienst verbinden 30000ms = Status = 503 Bytes = 0

debug

Ich habe versucht, auf das Debuggen in der Produktion drehen ...

config/Umgebungen/production.rb

config.consider_all_requests_local = true 
config.log_level = :debug 

aber nichts wirklich nur eine allgemeine,

Anwendungsfehler zeigt sich ... Ihre Seite konnte nicht bedient werden ... versuchen Sie es erneut .... Protokollen überprüfen.

Es ist die einzige Sache, die Art Sinn macht, da es in Entwicklung arbeiten

Irgendwelche Vorschläge oder Ideen, was zu tun? Vielen Dank!

+0

'config.assets.debug = true' schaltet nur Rails-Asset-Debugging ein, meintest du Debug-Logging in' production.rb' zu aktivieren? Wenn ja, benutze 'config.log_level =: debug ' –

+0

@stuart danke. Das war ein Tippfehler in der Frage. Ich habe es oben korrigiert. 'config.log_level =: debug 'ist die aktuelle Einstellung. – haley

+0

Wie lange dauert es, bis der Proxy die Seiten für Sie in Entwicklung lädt? Heroku hat einige Informationen zu diesem Fehler ['Request Timeout'] (https://devcenter.heroku.com/articles/request-timeout), der nützlich sein kann. Könnte es nur sein, dass die Proxy-Nutzung dieser Seiten in der Heroku-Umgebung länger dauert? –

Antwort

0

ich gerade Setup diese auf Schienen 4. Es wurde auf alle Unterverzeichnis arbeitet mit:

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

aber es war eine dauerhafte Umleitung (301) bei einem Besuch/blog ohne Unterverzeichnis zu reagieren.

Um das Problem zu lösen, einfach umschreiben/blog to/blog/home und stellen Sie sicher, dass Sie diesen Alias-Link in Ihrem Blog hinzufügen!

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

Vielleicht kann uns jemand sagen, ob diese Hypothese wahr ist: Es ist häufig, dass das Blog-Engine eine Umleitung auf dem Haus hat, die den Proxy vielleicht brechen.

Haben Sie einen schönen!