2010-12-07 79 views
0

Après avoir déployé l'application 3 rails en production, j'ai remarqué que les chemins ne sont pas toujours affichés dans la fenêtre du navigateur. Par exemple, aller sur les liens login ou my_profile n'affichera toujours que http://my_app.com au lieu de http://my_app.com/login ou http://my_app.com/my_profile. Les points de vue ont changé et étaient fonctionnels. Je pouvais aussi voir la base de données en train d'être touchée et les vues rendues à partir des logs (ce qui m'a amené à croire que ce n'était pas un simple problème de cache du navigateur). Aller directement à http://my_app.com/login travaillé, cependant, en utilisant les liens dans l'application me conduirait à l'endroit prévu tout en laissant l'adresse de connexion affichée. Je l'ai essayé dans plusieurs navigateurs (firefox, opera et chrome) et j'ai eu le même comportement. L'application a été déployée sous nginx + passenger et plus tard nginx + thin cluster. Ma question est, que se passe-t-il? Pourrait-il s'agir de paramètres nginx ou de mes paramètres d'environnement de production? Je ne sais pas trop où commencer.chemin d'accès des rails non affiché dans le navigateur (parfois)

Exécution curl -v my_app.avec des expositions

* 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"
< X-Cache: MISS from server.com
< 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>
<frameset framespacing="0" rows="100%,*" cols="100%" frameborder="no" border="0">
<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>

Il est donc clair C'est un problème. Le tout est encadré par la redirection DNS? L'installation n'est pas Phusion Passenger + nginx. C'était à l'origine, mais maintenant c'est mince + nginx. Aussi, lorsque vous allez directement à l'adresse IP de l'application, les choses vont bien. Quand je vais au nom de domaine, je reçois la version encadrée. curl -v réponse de seulement l'adresse IP semble également normal (comme son chargement de la page entière).

+0

(non) -formatation de la question trop douloureuse pour les yeux. – Zabba

+1

Que retourne curl -v http: // my_app.com'? – DanSingerman

Répondre

1

Le problème est presque certainement vos cadres.Le cadre interne charge le contenu correct, mais parce que vous ne ciblez probablement pas le haut de vos liens (ou quoi que ce soit), le navigateur affiche toujours l'URL du cadre le plus externe.

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

Si vous ne nous attendions pas à voir les images dans votre réponse à tout alors il est probable qu'ils sont la responsabilité d'un service « DNS » de mauvaise qualité. Obtenez une adresse DNS réelle pointée vers votre serveur et vous chanterez.

+0

Merci pour votre réponse. Je n'utilise pas de cadres dans l'application. Ceci est mon DNS. Je ne pense pas qu'ils soient de mauvaise qualité, ils viennent du Canada. Il se peut que je ne sache pas comment les utiliser ou en savoir assez sur DNS. – fflyer05

+0

>> "Je ne pense pas qu'ils soient de mauvaise qualité, ils viennent du Canada." hehehe – noodl

+0

Le problème était avec ma configuration DNS. Il a été configuré pour transférer le nom de domaine du serveur à l'adresse IP du serveur. Donc, il a été mis en place pour avancer sur lui-même. C'est de là que vient le