Ruby on rails Nginx:配置nginix以在生产环境中为非预编译资产提供服务

Ruby on rails Nginx:配置nginix以在生产环境中为非预编译资产提供服务,ruby-on-rails,nginx,assets,unicorn,Ruby On Rails,Nginx,Assets,Unicorn,我有一个带有机车cms的rails应用程序。我希望能够通过我的CMS引用特定的css/js文件,并且能够在开发过程中使用类似assets/subfolder/file.css的URL。当我使用nginx和unicorn将我的应用程序部署到服务器时,这些URL不再工作,我的所有图像都停止加载。在将以下内容添加到我的nginx conf文件后,图像开始加载,但CSS/JS文件仍然无法工作 root /var/www/myproject/public/; location ~ ^/assets/ {

我有一个带有机车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目录中的资产提供服务?

希望您有一个很好的理由不想预编译资产,但这应该会有所帮助

#{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
位置正确解析


1y到期
在您的nginx配置中,对引用的css/js文件的任何更改都可能不会被具有缓存副本的浏览器请求。

希望您有一个很好的理由不想预编译资产,但这应该会有所帮助

#{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
位置正确解析

1y到期
在nginx配置中,具有缓存副本的浏览器可能不会请求对引用的css/js文件进行任何更改