2011-08-28 51 views
5

我设置了一个运行Rails 3.1.0rc6,Thin和Nginx的生产环境。Rails忽略config.action_dispatch.x_sendfile_header?使用Thin + Nginx

出于某种原因,已经在config/environments/production.rb设置config.action_dispatch.x_sendfile_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的还是设置头。我已经尝试将sendfile_header行添加到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的虚拟主机:

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然后再次启动了几次,也没有用。

回答

3

我碰到这production.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_sendfile_header改为它应该是什么,所以它似乎铁轨(和/或浏览器)在改变变量之后什么都不做。

这件事是通过将rails console,并键入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)