2012-05-02 33 views
6

Stackoverflowers. Tôi gặp vấn đề với cấu hình nginx của Rails. Tôi đang chạy một ứng dụng Rails 3.0.12 và tôi khá mới với nginx.nginx không phân phát nội dung tĩnh trong Rails 3

Tôi dường như không thể nginx phân phát nội dung tĩnh. Đối với mọi yêu cầu trong /public thư mục tôi nhận được 404. Tôi đang đăng cấu hình nginx tôi đã nhận được cho đến nay. Có lẽ tôi bị mất cái gì

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

} 

tôi đã cố gắng loại bỏ các khối location / từ project.conf, nhưng nó đã không làm bất cứ điều gì, tài sản vẫn chưa có thể nhìn thấy.

Tôi cũng biết về chuyển đổi serve_static_assets trong Rails, nhưng tôi muốn có nginx phân phát các nội dung đó, vì nó sẽ làm như vậy.

Trả lời

6

Bạn cần phải thêm một cái gì đó như thế (documentation on locations):

location/{ 
    try_files $uri @ruby; 
} 

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

Tôi biết chủ đề này là hơn một năm tuổi nhưng tôi đã có cùng một vấn đề chạy trong sản xuất

Cái điều làm cho nó hoạt động đối với tôi là chạy

rake assets:precompile 

trong phát triển, và uncommenting

load 'deploy/assets' 

mặc dù tôi đang sử dụng đường ray 4.

Các vấn đề liên quan