4

アセット パイプラインを有効にして、Capistrano 経由で Rails 3.2.8 アプリケーションを Linode サーバーにデプロイしました。

nginx + unicorn を実行しています。

アプリケーションにアクセスすると、最小化された JS と CSS が提供されていませんが、アセットは にあり<RAILS_DIR>/public/assetsます。

$ tree assets
assets
|-- application-66e477d6fd8cf088e8be44affeead089.css
|-- application-66e477d6fd8cf088e8be44affeead089.css.gz
|-- application-7d3ead38a0b5e276a97d48e52044ac31.js
|-- application-7d3ead38a0b5e276a97d48e52044ac31.js.gz

私のアプリケーションでは、これらの正確なファイルが見つからないことがわかります。

エラー

これは私のnginx構成です:

server {
  listen 80 default deferred;
  server_name me.example.com;
  root /home/kennym/apps/app/current/public;

  location ^~ /assets/ {
    add_header Last-Modified "";
    add_header ETag "";
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @unicorn;
  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://unicorn;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

何が悪いのか推測できますか?

4

3 に答える 3

9

location ^~ /assets/する必要がありますlocation ~ ^/assets/

前者は/assets/ と一致しません。後者は/assets/ で始まるパターンと一致します。

nginx の設定を更新して、キャッシングと事前に gzip されたファイルの提供が再び機能するようにします。

于 2012-10-11T07:21:59.567 に答える
2

location ^~ /assets/のブロックをコメントアウトして、これを修正しましたnginx.conf

于 2012-09-30T15:50:23.980 に答える