这是一个 AWS 问题,我使用的是 Ruby 2.2 (Puma) 平台。
我编译的 Assets (在/public/assets 中)按预期提供。/public 中的其他 Assets 没有得到服务(404)。
我在哪里配置这个?这是 nginx 的问题吗?还是美洲狮的问题?
或者这只是 AWS 图像问题?
这是一个实时示例(robots.txt 应该从根提供):
http://staging.us-west-2.elasticbeanstalk.com/public/robots.txt
还值得一提的是,默认的Passenger 平台图像开箱即用。
最佳答案
所以,我使用的是完全相同的环境,我用一点 google fu 找到了解决方案:
使用 rails 4+,在文件中:
/config/environments/production.rb
您应该在文件顶部附近找到以下几行
# Disable serving static files from the `/public` folder by default since
# Apache or NGINX already handles this.
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
这一切都很好,因为我们使用的是乘客(nginx 或 apache),但是 Puma 没有为我们处理这个问题:)
为了解决这个...
在您的 AWS 控制台中,转到相关项目的弹性 beanstalk 仪表板,然后单击左侧菜单上的“配置”。
现在单击标题为“软件配置”的框中的小齿轮图标
现在您应该在“环境属性”下看到一个表,在“属性名称”下的新字段中输入“RAILS_SERVE_STATIC_FILES”,然后在值字段中输入“true”(不带引号),点击应用。
中提琴!现在您的项目正在提供静态文件:)
关于ruby-on-rails - 如何使用 puma/nginx 在/public 中提供不属于 Assets 管道的 Assets ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34963529/