rails路径路径未在浏览器中显示(有时)

时间:2010-12-07 04:25:05

标签: ruby-on-rails path nginx routes production-environment

在生产中部署我的rails 3 app之后,我注意到路径并不总是显示在浏览器窗口中。例如,登录或my_profile链接仍然只显示http://my_app.com而不是预期http://my_app.com/loginhttp://my_app.com/my_profile。观点确实发生了变化并且起了作用。我还可以看到数据库被点击并从日志中呈现视图(这使我相信它不是一个简单的浏览器缓存问题)。直接转到http://my_app.com/login工作,但是,使用应用程序中的链接会将我带到预期的位置,同时显示登录网址。我在几个浏览器(firefox,opera和chrome)中尝试过它并获得相同的行为。该应用程序部署在nginx +乘客和后来的nginx +瘦集群下。我的问题是,最近发生了什么?可能是nginx设置还是我的生产环境设置?我不知道从哪里开始。

运行curl -v my_app.com显示

* 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.0a zlib/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>

所以这显然是个问题。整个事情是由DNS重定向构成的?设置不是Phusion Passenger + nginx。它原来是,但现在它的瘦+ nginx。此外,当直接进入应用程序的IP地址时,事情就好了。当进入域名时,我得到了框架版本。只有ip地址的curl -v响应也看起来很正常(就像加载整个页面一样)。

2 个答案:

答案 0 :(得分:1)

问题几乎可以肯定是你的画面。内部框架正在加载正确的内容,但由于您(可能)没有在链接中指向“顶部”(或者不管它是什么),浏览器仍然显示最外层框架的URL。

定位框架:http://www.w3.org/TR/html4/present/frames.html#h-16.3

如果你不希望在你的回复中看到框架,那么很可能他们是伪劣“DNS”服务的责任。获取指向您服务器的真实DNS地址,您将会唱歌。

答案 1 :(得分:0)

您是否尝试使用其他客户端计算机进行测试?如果我遵循你的解释,这是你没有调查的一个选项。

您可以将您的nginx配置发送给我们吗?