Ruby on rails 即使nginx配置错误,Rails也会显示图像?

Ruby on rails 即使nginx配置错误,Rails也会显示图像?,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我有一个Rails 5应用程序。我正在使用Carrierwave gem允许将图像上载到public/system/ 在查看生产应用程序的性能调整时,我意识到我错误配置了nginx,它只提供来自/assets而不是/assets和/system的静态文件 我所拥有的: location ~ ^/assets/ { gzip_static on; expires max; add_header Cache-Control public; } 我认为我应该: locatio

我有一个Rails 5应用程序。我正在使用Carrierwave gem允许将图像上载到public/system/

在查看生产应用程序的性能调整时,我意识到我错误配置了nginx,它只提供来自/assets而不是/assets和/system的静态文件

我所拥有的:

location ~ ^/assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
}
我认为我应该:

location ~ ^/(assets|system)/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
}
但是,production.rb中设置了config.public_file_server.enabled=false

所以现在我很困惑——Rails是如何服务于这些图像的?我假设我对资产管道的实际运作方式有一个非常不完整的理解

更新:nginx config


这将有助于发布此应用程序的整个nginx配置。当乘客、puma等提供服务时,Rails将尊重公共文件服务器。但是,它可以很容易地被nginx覆盖。 公共nginx配置行

root /home/rails/testapp/public;
基本上告诉nginx按原样服务/public,并使public\u file\u服务器不相关。
也许吧。

你是说根的存在。。。声明使得location ~^/assets/{语句多余-将root设置为app/public目录将导致nginx以任何方式公开提供所有静态文件?如果出于某种原因,我确实希望nginx仅从public的assets子目录提供服务,我会完全忽略root声明吗?
root /home/rails/testapp/public;