configuração nginx para implementação do subdiretório rails

1

Estou com um pouco de dificuldade para configurar o nginx para servir os arquivos estáticos do aplicativo Rails; Quero dizer todos os arquivos na pasta public/ do aplicativo, não apenas os arquivos no pipeline de ativos do Rails. Parece que eu consigo fazer as coisas funcionarem, mas não consigo entender como juntar tudo. Meu aplicativo é instalado em um subdiretório no servidor ( /dashboard ) e não na raiz da Web.

Aqui estão trechos dos meus vários arquivos de configuração:

config.ru :

map Dashboard::Application.config.relative_url_root || "/" do
  run Rails.application
end

environments / production.rb :

config.relative_url_root = "/dashboard"
config.assets.prefix = "/dashboard/assets/"

nginx.conf :

location /dashboard/ {

    root /srv/XXX/dashboard/public;

    location /dashboard/assets/ {
        gzip_static on;
        expires max;
        add_header Cache-Control public;
    }

    try_files $uri @unicorn;

    error_page 500 502 503 504 /500.html;
    client_max_body_size 4G;
    keepalive_timeout 10;
}

location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://unicorn_server;
}

upstream unicorn_server {
    server unix:/srv/XXX/dashboard/tmp/sockets/unicorn.sock fail_timeout=0;
}

Com esta configuração eu posso servir o próprio aplicativo Rails usando unicórnio e os arquivos dentro da pasta public/assets/ usando nginx, mas o resto dos arquivos na pasta public/ são roteados para Rails e acabam retornando um código de status 404. Eu sei que isso é porque o servidor está procurando (por exemplo) /dashboard/robots.txt que não existe dentro da pasta public/ . Acredito que preciso usar alias para manipular os caminhos, mas não consegui juntar tudo para que o Rails atenda corretamente ao aplicativo e ao nginx para exibir os arquivos estáticos.

    
por sbooth 11.12.2013 / 01:13

0 respostas