【问题标题】:Carrierwave with S3 and Cloudfront not displaying images带有 S3 和 Cloudfront 的 Carrierwave 不显示图像
【发布时间】:2016-12-09 23:37:28
【问题描述】:

您好,我目前正在使用 Rails 和 Heroku 以及 GoDaddy 构建一个自定义域名的站点。

我正在将 Carrierwave 与 Fog、Amazon S3 一起使用,并设置了一个以我的 Heroku 域名作为 Origin Domain 的云端。目前,该站点加载图像的速度非常慢,这就是我设置云端的原因,但我的carrierwave 的配置文件似乎没有将网址更改为云端对应的网址。这是我的载波配置文件。我希望用户能够通过 Carrierwave 上传图片,然后将这些图片通过我的云端服务返回。

CarrierWave.configure do |config|
config.fog_provider = 'fog/aws'                        # required

config.fog_credentials = {
provider:              'AWS',                        # required
aws_access_key_id:     'acesskey',                        #      required
aws_secret_access_key: 'secretkey',                        # required
region:                'us-east-1',                  # optional, defaults to 'us-east-1'
}

config.fog_directory  = 'directory'                          # required
# config.fog_public     = false    # optional, defaults to true
config.asset_host = 'randomjunk.cloudfront.net'
config.fog_public = false 
config.fog_attributes = { 'Cache-Control' => "max-age=#{365.day.to_i}" } #     optional, defaults to {}
end

只要 config.fog_public 为 false,它就可以工作,但是当我将其更改为 config.fog_public = true 时,url 现在是正确的,但找不到图像。这与我的配置设置有关还是我使用 Heroku 错误地设置了我的云端?

【问题讨论】:

    标签: ruby heroku amazon-s3 carrierwave fog


    【解决方案1】:

    这取决于您最初创建文件时使用的设置。如果它们是使用config.fog_public = false 创建的,它们将是私有文件,并且将使用一个特殊的签名 url 到 s3 来完成访问。我认为资产主机仅用于公开文件(因此您所看到的)。如果您使用fog_public = true 上传文件,那么我认为您不会看到找不到。您也可以将其设置为 true 并重新保存图像以更改该属性(我不太确定这里的细节,但您当然应该能够将它们更改为 public)。

    【讨论】:

      猜你喜欢
      • 2012-11-25
      • 2016-07-23
      • 2018-06-13
      • 2013-03-04
      • 2013-09-13
      • 2014-07-20
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多