2012-05-02 11 views
6

Stackoverflowers. Tengo un problema con mi configuración de Rails nginx. Estoy ejecutando una aplicación Rails 3.0.12, y soy bastante nuevo en nginx.nginx no sirve activos estáticos en Rails 3

Parece que no puedo hacer que nginx sirva activos estáticos. Para cada solicitud en la carpeta /public obtengo 404. Estoy publicando la configuración nginx que obtuve hasta ahora. Tal vez me haya perdido algo

nginx.conf:

user rails; 
worker_processes 1; 
daemon off; 

error_log /var/log/nginx/error.log; 
pid  /var/run/nginx.pid; 

events { 
    worker_connections 2048; 
} 

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

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

    sendfile on; 
    tcp_nopush on; 
    tcp_nodelay on; 

    keepalive_timeout 65; 

    gzip on; 
    gzip_http_version 1.0; 
    gzip_comp_level 2; 
    gzip_proxied any; 
    gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript; 

    server_names_hash_bucket_size 64; 

    include /etc/nginx/conf.d/*.conf; 
    include /etc/nginx/sites-enabled/*; 
} 

sites-enabled/project.conf:

upstream project { 
    # fail_timeout=0 means we always retry an upstream even if it failed 
    # to return a good HTTP response (in case the Unicorn master nukes a 
    # single worker for timing out). 

    # for UNIX domain socket setups: 
    server unix:/tmp/project.socket fail_timeout=0; 
} 

server { 
    listen 80; 
    root /srv/www/project/current/public; 
    passenger_enabled on; 
    server_name dev.project.eu; 
    server_name *.dev.project.eu; 

    location/{ 
     #all requests are sent to the UNIX socket 
     proxy_pass http://project; 
     proxy_redirect  off; 

     proxy_set_header Host    $host; 
     proxy_set_header X-Real-IP  $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

     client_max_body_size  10m; 
     client_body_buffer_size 128k; 

     proxy_connect_timeout  90; 
     proxy_send_timeout   90; 
     proxy_read_timeout   90; 

     proxy_buffer_size   4k; 
     proxy_buffers    4 32k; 
     proxy_busy_buffers_size 64k; 
     proxy_temp_file_write_size 64k; 
     root /srv/wwww/project/current/public; 
    } 

} 

He intentado quitar el bloque de location /project.conf, pero no hice nada, los activos aún no están visible.

También conozco el interruptor serve_static_assets en Rails, pero prefiero que nginx sirva esos recursos, como debería ser.

Respuesta

6

es necesario agregar algo por el estilo (documentation on locations):

location/{ 
    try_files $uri @ruby; 
} 

location @ruby { 
    proxy_pass http://project; 
} 
0

Sé que este hilo es más de un año de edad pero que tenía el mismo problema que se ejecuta en la producción

Lo que hizo que funcione para mí estaba corriendo

rake assets:precompile 

en el desarrollo, y quitando los comentarios

load 'deploy/assets' 

aunque estoy usando raíles 4.

Cuestiones relacionadas