如何修改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
相关产品推荐
相关产品推荐

