Configurando Nginx, Thin e Rails. Pode acessar páginas estáticas, mas não dinâmicas

3

Eu configurei o nginx (nginx.conf abaixo) e thin. Tanto o nginx quanto o thin (2 servidores) estão rodando (verifiquei que estão rodando). Eu posso acessar uma página estática no diretório público rails, como index.html, mas se eu colocar em qualquer outro URL eu recebo uma página 500 gerada por nginx dizendo: "Desculpe, mas algo deu errado." Qualquer ajuda sobre o que estou fazendo de errado é apreciada. Eu quero ser capaz de acessar o aplicativo rails.

http {
include   /etc/nginx/mime.types;
default_type  application/octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout 30;

#gzip  on;

# Load config files from the /etc/nginx/conf.d directory
# The default server is in conf.d/default.conf
include /etc/nginx/conf.d/*.conf;

#Rails app config here
upstream Backend  {
      server 127.0.0.1:3000;
      server 127.0.0.1:3001;
}

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


server {
        listen   80;
                    server_name domain.com;

        access_log /applications/RailsApp/log/access.log;
        error_log /applications/RailsApp/log/error.log;

        root /applications/RailsApp/public;
        # index  index.html;

        location / {
                      proxy_set_header  X-Real-IP  $remote_addr;
                      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
                      proxy_set_header Host $http_host;
                      proxy_redirect off;

                      if (-f $request_filename/index.html) {
                                       rewrite (.*) $1/index.html break;
                      }

                      if (-f $request_filename.html) {
                                       rewrite (.*) $1.html break;
                      }

                      if (!-f $request_filename) {
                                       proxy_pass http://Backend;
                                       break;
                      }
        }

 }

}

Este exatamente o meu nginx.conf, exceto domain.com, é um espaço reservado para o domínio atual.

    
por Skill M2 21.05.2012 / 02:20

1 resposta

1

Depois de perceber que o erro era de trilhos e não de nginx ou thin, o problema foi resolvido rapidamente verificando log / production.log em meu aplicativo Rails. Eu tive dois problemas.

Primeiro o socket para o meu db de produção em config / database.yml estava incorreto. Eu tive que mudá-lo do soquete incorreto: tmp / mysql.sock para onde ele realmente está no meu sistema, socket: var / lib / mysql / mysql.sock.

Depois disso, houve outro erro no log / production.log sobre um arquivo css não ser pré-compilado. Isso foi corrigido editando config / environments / production.rb e alterando 'config.assets.compile = false' para 'config.assets.compile = true'.

    
por 21.05.2012 / 23:12