我有一个带有机车cms的rails应用程序。我希望能够通过我的CMS引用特定的css / js文件,并且能够使用像assets / subfolder / file.css这样的URL进行开发。当我使用nginx和unicorn将我的应用程序部署到服务器时,这些URL不再有效,并且我的所有图像都停止加载。将以下内容添加到我的nginx conf文件后,图像开始加载但CSS / JS文件仍无法正常工作。
root /var/www/myproject/public/;
location ~ ^/assets/ {
expires 1y;
add_header Cache-Control public;
add_header ETag "";
break;
}
我需要配置什么才能让nginix和unicorn可以从app / assets / css或app / assets / javascript目录中提供资源?
答案 0 :(得分:0)
希望你有一个很好的理由不想预编译资产,但这应该会有所帮助。
#{Rails.root}/config/environments/production.rb
config.serve_static_assets = true
默认情况下,在Rails.env == "production"
时,Rails应用不会投放资源。在开发/测试环境中,Rails将处理对assets / subfolder / file.css的请求,并正确地从#{Rails.root}/app/assets/subfolder/file.css
中呈现资产。
rake assets:precompile
将生成的css / js文件放在#{Rails.root}/public/assets
中,该文件将相对于nginx配置中的root
位置正确解析。
在nginx配置中使用expires 1y;
时,具有缓存副本的浏览器可能不会请求对引用的css / js文件所做的任何更改。