You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改ActiveStorage GCS重定向的主机地址?

解决ActiveStorage GCS公开桶使用CDN域名的问题

既然你的GCS存储桶已经设为公开状态,完全不需要通过Rails代理(也就是rails_storage_proxy_url)来访问资源,改用服务直接URL就能直接生成CDN域名的地址,具体操作如下:

  • 修改ActiveStorage的GCS配置
    在config/storage.yml中给GCS服务添加public: true和host配置,指定你的CDN域名:

    google:
      service: GCS
      project: 你的项目ID
      credentials: <%= Rails.root.join("config/google-cloud-key.json").to_s %>
      bucket: 你的存储桶名称
      public: true
      host: cdn.example.com
    
  • 替换URL生成方法
    把原来的rails_storage_proxy_url换成rails_storage_service_url,这个方法会直接生成基于你配置的CDN域名的资源地址:

    # 直接调用对象的service_url方法
    object.service_url(host: ENV.fetch('CDN_HOST', 'cdn.example.com'))
    
    # 或者用路由助手
    Rails.application.routes.url_helpers.rails_storage_service_url(object, host: ENV.fetch('CDN_HOST'))
    

补充说明

rails_storage_proxy_url的作用是让Rails服务器作为中间代理,先返回一个重定向到GCS官方地址的响应,这不仅多了一层跳转,而且默认会使用GCS的storage.googleapis.com域名,不符合你用CDN域名的需求。而公开桶用服务URL是最直接高效的方式,生成的地址会直接是https://cdn.example.com/aaf3h8a73hfa33a9这种格式。

内容的提问来源于stack exchange,提问作者Tallboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 02:22:18