2010-12-07 6 views
0

私のレール3アプリケーションをプロダクションでデプロイした後、私はパスが常にブラウザウィンドウに表示されないことに気付きました。たとえば、loginまたはmy_profileリンクには、http://my_app.com/loginまたはhttp://my_app.com/my_profileではなく、http://my_app.comと表示されます。ビューは変わり、機能しました。私はまたデータベースがヒットしているのを見て、ログからレンダリングされているビュー(これは単純なブラウザキャッシュの問題ではないと私に信じさせた)。ただ、http://my_app.com/loginに行くと、アプリケーションのリンクを使用すると、予想される場所に移動し、ログインURLは表示されたままになります。私はいくつかのブラウザ(firefox、opera、chrome)で試してみましたが、同じ動作をしました。アプリはnginx +パッセンジャーとnginx + thinクラスタの配下に配備されました。私の質問は何ですか?それはnginxの設定または私の生産環境の設定ですか?私はどこから始めるべきかわからない。railsルートパスがブラウザに表示されない(時々)

curl -v my_appを実行しています。番組

* 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

< 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>

だから、明らかにそれは問題です。すべてがDNSリダイレクトによって枠をつけられますか?セットアップはPhusion Passenger + nginxではありません。それはもともとは、今の薄い+ nginxだった。アプリのIPアドレスに直接行くときにも、物事はうまくあります。私がドメイン名に行くと、私はフレーム版を手に入れます。 (そのページ全体を読み込むなど)だけで、IPアドレスのcurl -v応答はまた、標準的なルックス。

+0

(あまりにも) - 目にあまりにも痛い質問の書式設定。 – Zabba

+1

'curl -v http:// my_app.com'は何を返しますか? – DanSingerman

答えて

1

問題はほぼ確実にあなたのフレームです。内側のフレームが正しいコンテンツを読み込んでいますが、あなたのリンク(またはそれが何であれ)の「上」をターゲットにしていない(おそらく)ため、ブラウザは引き続き最外のフレームのURLを表示しています。 http://www.w3.org/TR/html4/present/frames.html#h-16.3

あなたがすべてであなたの応答フレームを見て予想していなかった場合、それは彼らが手抜き「DNS」サービスの責任だ可能性があります:フレームをターゲット

。あなたのサーバに向けられた実際のDNSアドレスを取得して、あなたは歌います。

+0

ご返信ありがとうございます。私はアプリでフレームを使用しません。これが私のDNSです。私は彼らがばかげているとは思わない、彼らはカナダ出身です。私はそれらの使い方やDNSについて十分に知りません。 – fflyer05

+0

>>「私は彼らがばかげているとは思わない、彼らはカナダ出身です」 hehehe – noodl

+0

問題は私のDNSの設定であった。サーバーのドメイン名をサーバーのIPアドレスに転送するようにセットアップされました。それで、それは自分自身に前進するように設定されました。どこが