Nginx不在rails 4资产管道中提供静态资产

时间:2014-11-18 03:57:11

标签: ruby-on-rails-4 nginx server

最近几天我尝试将我的应用程序部署到生产环境中。我已部署完成但我的应用没有显示图标。

此配置在app / config / environments / production.rb

config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local       = false
config.action_controller.perform_caching = false
config.serve_static_assets = true
config.assets.js_compressor = :uglifier
config.assets.compile = false
config.assets.digest = true
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect'

和nginx.conf

location ~ ^/(assets)/  {
 root /my_public_path_here;
 gzip_static on;
 expires max;
 add_header Cache-Control public;
}

如果你有类似的问题,请留言,谢谢你![/ p>

2 个答案:

答案 0 :(得分:2)

看看this Nginx配置示例是否一致且功能齐全。此配置描述了通过Unix套接字在 Unicorn 上运行的 Rails app Nginx 代理。关于您的问题,您的location ~ ^/(assets)/ {...部分似乎是正确的。

尝试try_files部分(注意$uri $uri/index.html $uri.html):

  location / {
    ## Serve static files from defined root folder.
    ## @your_up_stream_name is a named location for the upstream fallback, see below.
    try_files $uri $uri/index.html $uri.html @your_up_stream_name;
  }

还要确保@your_up_stream_name是正确的上游名称。为了以防万一,确保玩具已经预先编译; - )

$ RAILS_ENV=production bundle exec rake assets:precompile

答案 1 :(得分:0)

我使用这样的东西来提供静态资产(如果它们存在)

location / {
  try_files $uri @app;
}

location @app {
  # rails app stuff here...
}

也许您只是错过了上面的try_files指令。