Nginx无法识别我的Rails 3应用程序

问题描述:

我已经在我的Linode VPS上设置了nginx + REE +乘客,该程序在过去六个月中运行良好,均适用于Rails 2.3.x和Sinatra应用程序。Nginx无法识别我的Rails 3应用程序

不过这一周,我试图添加的Rails 3应用程序堆栈,我不断获取404 Not Found。日志显示nginx无法识别Rails应用程序,并试图将其作为静态服务。

2010/11/29 23:44:44 [error] 12464#0: *29 "/var/app/modelky/public/index.html" 
is not found (2: No such file or directory), client: 90.177.23.122, server: 
reedink.com, request: "GET/HTTP/1.1", host: "reedink.com" 

2010/11/29 23:44:44 [error] 12464#0: *30 open() "/var/app/modelky/public/favicon.ico" 
failed (2: No such file or directory), client: 90.177.23.122, 
server: reedink.com, request: "GET /favicon.ico HTTP/1.1", host: "reedink.com" 

不过,我使用的,因为我用我的所有其他的Rails 2.3.5和Sinatra的应用程序没有任何问题

server { 
    listen 80; 
    server_name www.reedink.com; 
    rewrite ^(.*) http://reedink.com$1 permanent; 
} 

server { 
    listen 80; 
    server_name reedink.com; 
    root /var/app/modelky/public; 
    passenger_enabled on; 
} 

从我了解的工作原理相同的配置,Rails 3的应要兼容机架,所以从服务器的角度来看,它与任何Sinatra应用程序没有区别?

看起来你的请求不打轨。我想尝试:

  • /var/app/modelky/public把静态的index.html,看看它显示了
  • 检查,如果Rails应用程序是在给定的路径,并重新启动nginx的
  • 启动前乘客在该服务器上,并看看它是如何反应

要起动前乘客:

http { 
    server { 
    listen 80; 
    server_name www.reedink.com; 
    rewrite ^(.*) http://reedink.com$1 permanent; 
    } 

    server { 
    listen 80; 
    server_name reedink.com; 
    root /var/app/modelky/public; 
    passenger_enabled on; 
    } 
passenger_pre_start http://reedink.com/; 
} 
+1

我尝试添加静态的index.html,但我仍然得到了同样的错误..然后我意识到它应该是/ var /应用程序,而不是在/ var /应用..反正,感谢帮助 – 2010-11-29 23:52:44

我刚建了AR这个周末在林德的3个盒子里。我开始瓦特/这stackscript

http://www.linode.com/stackscripts/view/?StackScriptID=1288

,然后从那里去了。

这里是从nginx.conf

server { 
    listen 80; 
    server_name localhost; 
    root /home/deploy/foo.bar.com/current/public; 
    passenger_enabled on; 
} 

我也想尝试添加静态index.html文件,得到nginx的正常工作,然后尝试和引导Rails应用程序我的服务器的conf的副本。