ruby-on-rails – Rails / Nginx不提供JS和CSS

我通过Capistrano将启用了资产管道的Rails 3.2.8应用程序部署到我的Linode服务器.

它正在运行nginx独角兽.

当我访问我的应用程序时,虽然资产存在于< RAILS_DIR> / public / assets中,但是最小化的JS和CSS没有被提供.

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

你能猜出出了什么问题吗?

解决方法:

位置^〜/ assets /应该是位置〜^ / assets /.

前者与/ assets /不匹配,后者匹配以/ assets /开头的模式

更新您的nginx配置以获得缓存和预先gzipped文件服务再次工作.

上一篇:Android帧动画笔记


下一篇:ruby-on-rails – Rails将协议设置为始终为HTTP