2011-08-28 8 views
5

Mam skonfigurowane środowisko produkcyjne z Railsami 3.1.0rc6, Thin i Nginx.Railsy ignorujące plik config.action_dispatch.x_sendfile_header? Używając Thin + Nginx

Z jakiegoś powodu, po ustawieniu config.action_dispatch.x_sendfile_header = "X-Accel-Redirect" w config/environments/production.rb, Railsy najwyraźniej całkowicie go zignorowały; Aktywa te nie są podawane, a nagłówki odpowiedzi dla jednego pliku jest następujący:

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 

Więc wydaje Rails jest jeszcze ustawienie nagłówka . Próbowałem dodać linię sendfile_header do config/application.rb, ale domyślam się, że jest również przesłonięta lub zignorowana.

Mój plik yml cienkich:

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

Ja już próbowałem /etc/init.d/thin stop następnie uruchamiając go ponownie kilka razy, bezskutecznie.

Odpowiedz

3

natknąłem to w 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) 

Problemem jest to, że przeglądarka zażądała tego pliku przedx_sendfile_header została zmieniona na to, co powinno być, więc wydaje się, że Rails (i/lub przeglądarka) absolutnie nic nie robi po zmianie zmiennej.

Problem został rozwiązany, przechodząc do rails console i wpisując Rails.cache.clear. Twarde odświeżenie po tym rozwiązuje problem!

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)