Nginx не распознает мое приложение на Rails 3 - PullRequest
0 голосов
/ 30 ноября 2010

Я настроил nginx + REE + passenger на моем Linode VPS, который отлично работает в течение последних шести месяцев, как для 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 голосов
/ 30 ноября 2010

Я только что построил рельс 3 на линоде в эти выходные.Я запустил w / this stackscript

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

и затем пошел оттуда.

вот копия моего сервера conf из nginx.conf

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

Я также попытался бы добавить статический файл index.html, заставить nginx работать должным образом, а затем попытаться запустить приложение rails.

0 голосов
/ 30 ноября 2010

Похоже, ваш запрос не попал в Rails.Я бы попытался:

  • поместить статический index.html в /var/app/modelky/public, чтобы увидеть, покажется ли он
  • , проверить, находится ли приложение 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/;
}
...