2010-12-07 11 views
0

Nach der Bereitstellung meiner Schienen 3 App in der Produktion habe ich festgestellt, dass Pfade nicht immer im Browserfenster angezeigt werden. Zum Beispiel gehen Sie zur Anmeldung oder My_profile Links würde immer noch nur http://my_app.com statt der erwarteten http://my_app.com/login oder http://my_app.com/my_profile zeigen. Die Aussicht änderte sich und funktionierte. Ich konnte auch sehen, dass die Datenbank getroffen wurde und die Aufrufe aus den Logs gerendert wurden (was mich zu der Annahme verleitete, dass es sich nicht um ein einfaches Browser-Cache-Problem handelte). Wenn ich direkt zu http://my_app.com/login gehe, funktionierte die Verwendung der Links in der App jedoch zum erwarteten Ort, während die Login-URL angezeigt wurde. Ich habe es in mehreren Browsern (Firefox, Opera und Chrome) ausprobiert und habe das gleiche Verhalten. Die App wurde unter nginx + passagier und später nginx + thin cluster eingesetzt. Meine Frage ist, was ist los? Könnte es sich um Nginx-Einstellungen oder meine Produktionsumgebung handeln? Ich bin mir nicht sicher, wo ich anfangen soll.rails route Pfad nicht im Browser angezeigt (manchmal)

Laufende Curl-v my_app.mit Shows

* About to connect() to my_app.com port 80 (#0)
* Trying xx.xx.xx.xx... connected
* Connected to my_app.com (xx.xx.xx.xx) port 80 (#0)
> GET/HTTP/1.1
> User-Agent: curl/7.21.1 (x86_64-apple-darwin10.4.0) libcurl/7.21.1 OpenSSL/1.0.0azlib/1.2.5 libidn/1.19
> Host: my_app.com
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Set-Cookie: ARPT=PKKIKIS10.0.81.64CKILJ; path=/
< Content-Type: text/html; charset=utf-8
< Status: 200
< X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 2.2.5
< ETag: "fce6dec3543058bec16175466020a906"
< X-Runtime: 7
< Content-Length: 787
< Cache-Control: private, max-age=0, must-revalidate
< Server: nginx/0.7.62 + Phusion Passenger 2.2.4 (mod_rails/mod_rack)
< P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
< Via: 1.0 server.com:8080
< Connection: close
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>http://my_app.com/</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta name="generator" content="Hover Redirect Service">
</head>
<frame name="DDIRECTXYZZY2" scrolling="auto" src="http://xxx.xx.xxx.xxx" noresize>
<frame name="DDIRECTXYZZY" scrolling="no" noresize>
<noframes>
<h1><a href="http://xxx.xx.xxx.xxx">http://my_app.com/</a></h1>
<p>Please <a href="http://xxx.xx.xxx.xxx">click here</a> to view the non-framed versi on.</p>
</noframes>
</frameset>
</html>

So klar ist das ein Problem. Die ganze Sache wird von der DNS-Umleitung gerahmt? Das Setup ist nicht Phusion Passenger + nginx. Es war ursprünglich, aber jetzt ist es dünn + nginx. Auch, wenn Sie direkt zur IP-Adresse der App gehen, sind die Dinge in Ordnung. Wenn ich zum Domain-Namen gehe, bekomme ich die gerahmte Version. curl -v Antwort von nur die IP-Adresse auch Standard-Aussehen (wie sein Laden der gesamten Seite).

+0

(nicht) -Formatierung der Frage zu schmerzhaft auf die Augen. – Zabba

+1

Was gibt 'curl -v http: // my_app.com' zurück? – DanSingerman

Antwort

1

Das Problem ist fast sicher Ihre Frames.Der innere Frame lädt den richtigen Inhalt, aber da Sie (vermutlich) nicht auf "top" in Ihren Links (oder was auch immer es ist) abzielen, zeigt der Browser immer noch die URL des äußersten Frames an.

Targeting Rahmen: http://www.w3.org/TR/html4/present/frames.html#h-16.3

Wenn Sie erwarten keine Frames in Ihrer Antwort zu sehen, überhaupt, dann ist es wahrscheinlich, dass sie die Verantwortung eines minderwertigen „DNS“ Dienst sind. Holen Sie sich eine echte DNS-Adresse auf Ihren Server und Sie werden singen.

+0

Danke für Ihre Antwort. Ich verwende keine Frames in der App. Das ist mein DNS. Ich glaube nicht, dass sie schäbig sind, sie kommen aus Kanada. Es kann sein, dass ich einfach nicht weiß, wie man sie benutzt oder über DNS genug weiß. – fflyer05

+0

>> "Ich glaube nicht, dass sie schäbig sind, sie kommen aus Kanada." hehehe – noodl

+0

Das Problem war mit meinem DNS-Setup. Es wurde eingerichtet, den Domänennamen des Servers an die IP-Adresse des Servers weiterzuleiten. So wurde es eingerichtet, um auf sich selbst zu übertragen. Woher kommt die