[英]rails configuring carrierwave with S3 and cloudfront
我有一個 rails4 應用程序,我正在嘗試將 CDN 添加到 S3 上傳。 由於某種原因,它不起作用。
當我出於某種原因在配置中設置 cloudfront 時,它僅對屬於同一上傳者的某些圖像(不是全部)有效,並且最重要的是這些圖像已損壞。 從 S3 顯示的圖像可以正常工作,但它們也應該從 cloudfront 提供。
我錯過了什么?
通過 cloudfront 顯示(損壞)的圖像:
<%= image_tag current_user.avatar.url(:small_thumb), class: 'navbar-avatar', alt: "#{current_user.first_name}'s_avatar", title: "#{current_user.first_name}'s avatar" %>
https://xyz.cloudfront.net/images/xyz.cloudfront.net/uploads/profile/avatar/3/small_thumb_3f4ff02.jpg
來自同一上傳者的圖像出於某種原因從 S3 而非 cloudfront 顯示(顯示未損壞)
<%= image_tag post.user.avatar.url(:base_thumb), class: 'post-avatar' %>
https://eaxmple.s3.amazonaws.com/uploads/profile/avatar/10/base_thumb_john_smith.png
配置:
CarrierWave.configure do |config|
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
}
config.fog_directory = ENV['S3_BUCKET_NAME']
config.fog_attributes = { 'Cache-Control' => "max-age=#{365.day.to_i}" }
config.asset_host = ENV['CLOUDFRONT_URL']
end
頭像_上傳者.rb
if Rails.env.production?
storage :fog
else
storage :file
end
寶石文件
gem 'carrierwave', '~> 0.10.0'
gem 'fog', '~> 1.34.0'
gem 'mini_magick', '~> 4.3.3'
更新
上傳器默認存儲:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
我該如何改變這一點:
https://xyz.cloudfront.net/images/xyz.cloudfront.net/uploads/profile/avatar/3/small_thumb_3f4ff02.jpg
對此:
https://xyz.cloudfront.net/uploads/profile/avatar/3/small_thumb_3f4ff02.jpg
看起來您可能需要將協議添加到您的 cloudfront url:
CLOUDFRONT_URL=https://xyz.cloudfront.net
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.