私は、Rails 3.1.0rc6、Thin、Nginxを実行している本番環境をセットアップしました。Railsはconfig.action_dispatch.x_sendfile_headerを無視していますか? Thin + Nginxの使用
config.action_dispatch.x_sendfile_header = "X-Accel-Redirect"
をconfig/environments/production.rb
に設定して何らかの理由で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
を試してみました。