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 配置以使缓存和预压缩文件服务再次工作。

于 2012-10-11T07:21:59.567 回答
2

我通过注释掉location ^~ /assets/.nginx.conf

于 2012-09-30T15:50:23.980 回答
0

对于那些有同样问题的人,对我来说,解决方案是正确/etc/nginx/conf.d/default.conf设置root字段。

于 2017-09-29T14:39:26.407 回答