Ruby on rails Rails忽略config.action\u dispatch.x\u sendfile\u头?使用Thin+;Nginx

Ruby on rails Rails忽略config.action\u dispatch.x\u sendfile\u头?使用Thin+;Nginx,ruby-on-rails,ruby-on-rails-3,nginx,thin,Ruby On Rails,Ruby On Rails 3,Nginx,Thin,我已经建立了一个运行Rails 3.1.0rc6、Thin和Nginx的生产环境 出于某种原因,在config/environments/production.rb中设置了config.action\u dispatch.x\u sendfile\u header=“x-Accel-Redirect”,Rails似乎完全忽略了它;未提供资产,一个文件的响应头如下所示: Server: nginx/1.0.5 Date: Sun, 28 Aug 2011 00:26:08 GMT Content-

我已经建立了一个运行Rails 3.1.0rc6、Thin和Nginx的生产环境

出于某种原因,在
config/environments/production.rb
中设置了
config.action\u dispatch.x\u sendfile\u header=“x-Accel-Redirect”
,Rails似乎完全忽略了它;未提供资产,一个文件的响应头如下所示:

Server: nginx/1.0.5
Date: Sun, 28 Aug 2011 00:26:08 GMT
Content-Type: image/png
Content-Length: 0
Cache-Control: no-cache
Last-Modified: Sat, 27 Aug 2011 23:47:35 GMT
Etag: "af4810c52cb323d9ed061d1db5b4f296"
X-UA-Compatible: IE=Edge,chrome=1
X-Sendfile: /var/www/***/app/assets/images/bg-linen-light.png
X-Runtime: 0.004595
X-Content-Digest: da39a3ee5e6b4b0d3255bfef95601890afd80709
Age: 0
X-Rack-Cache: stale, valid, store

200 OK
因此,Rails似乎仍在设置
X-Sendfile
头。我尝试将sendfile_头行添加到
config/application.rb
,但我猜它也被覆盖或忽略了

我的精简版的yml文件:

--- 
chdir: /var/www/***
environment: production
address: 0.0.0.0
port: 3000
timeout: 30
log: log/thin.log
pid: tmp/pids/thin.pid
max_conns: 1024
max_persistent_conns: 512
require: []

wait: 30
servers: 1
daemonize: true
Nginx vhost:

upstream *** {
    server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name ***;
    root /var/www/***/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://***;
            break;
        }
    }
}

我已经试过了
/etc/init.d/thin stop
,然后又启动了几次,但都没有成功。

我在
生产.log中遇到了这个问题:

Started GET "/assets/bg-linen-light.png" for ***** at 2011-08-28 11:04:42 +0400
Served asset /bg-linen-light.png - 304 Not Modified (102ms)
问题是,在
x\u sendfile\u header
更改为应该的文件之前,浏览器已经请求了该文件,因此,在更改变量后,Rails(和/或浏览器)似乎什么也不做

通过转到
rails控制台
,并键入
rails.cache.clear
,问题得以解决。之后的硬刷新解决了问题

Started GET "/assets/bg-linen-light.png" for ***** at 2011-08-28 11:06:06 +0400
Served asset /bg-linen-light.png - 200 OK (4ms)