2012-05-02 66 views
6

Stackoverflowers。我的Rails nginx配置有問題。我正在運行一個Rails 3.0.12應用程序,我對nginx很陌生。nginx不在Rails 3中提供靜態資產

我似乎無法讓nginx提供靜態資產。對於/public文件夾中的每個請求,我都得到了404。我發佈了迄今爲止我所獲得的nginx配置。也許我錯過了一些東西

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

} 

我試着從project.conf取出location /塊,但它沒有做任何事情,資產仍然不可見。

我也知道serve_static_assets開關在Rails中,但我寧願讓nginx服務這些資產,因爲它應該這樣做。

回答

6

您需要添加類似的東西(documentation on locations):

location/{ 
    try_files $uri @ruby; 
} 

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

我知道這個線程是一歲,但我有同樣的問題在生產運行

,使得它的工作的事情我正在運行

rake assets:precompile 

發展,並取消註釋

load 'deploy/assets' 

即使我正在使用導軌4.

相關問題