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

时间:2010-11-29 22:51:31

标签: ruby-on-rails ruby ruby-on-rails-3 nginx passenger

我已经在我的Linode VPS上设置了 nginx + REE +乘客,这对于Rails 2.3.x和Sinatra应用程序来说已经运行了六个月。

然而本周我尝试将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应用程序都没有区别吗?

2 个答案:

答案 0 :(得分:0)

本周末我刚刚在linode上建了一个铁轨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应用程序。

答案 1 :(得分:-1)

看起来您的请求没有达到Rails。我会尝试:

  • /var/app/modelky/public中放置一个静态index.html以查看它是否显示
  • 检查Rails应用程序是否在给定路径中并重新启动nginx
  • 预启动该服务器上的Passenger并查看其反应方式

预先启动乘客:

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/;
}