为私有Google Cloud Storage绑定自定义域名实现直传的方案咨询
GCS自定义域名直传适配方案
方案1:GCS原生自定义域名绑定(轻量化,单域名对应单桶场景)
- 前置要求:存储桶名称需和自定义域名完全匹配(如桶名是
storage.mycustomdomain.com),适合单桶用独立子域名的场景 - 操作步骤:
- 域名DNS解析添加CNAME记录,将
storage.mycustomdomain.com指向c.storage.googleapis.com - 进入GCP存储桶配置页,在自定义域名模块绑定
storage.mycustomdomain.com,按指引完成域名所有权验证 - 开启Google托管的SSL证书,完成HTTPS访问配置
- 域名DNS解析添加CNAME记录,将
- CarrierWave适配:修改配置项
config.fog_host = 'https://storage.mycustomdomain.com',直传表单的action字段同步替换为该域名即可 - 注意点:单个自定义域名仅支持绑定一个存储桶,多桶场景需要为每个桶配置独立的子域名(如
bucket1.mycustomdomain.com、bucket2.mycustomdomain.com)
方案2:GCP负载均衡+Cloud CDN(推荐,多桶共用同个自定义域名场景)
- 适用场景:需要用同一个
storage.mycustomdomain.com访问所有存储桶,不需要额外维护代理服务 - 操作步骤:
- 在GCP控制台创建外部HTTPS负载均衡,后端配置多个Backend Bucket分别对应你的不同存储桶,设置路径路由规则(如
/bucket1/*路由到桶1、/bucket2/*路由到桶2) - 为负载均衡绑定自定义域名
storage.mycustomdomain.com,申请Google托管的SSL证书 - DNS解析添加A/AAAA记录,将
storage.mycustomdomain.com指向负载均衡的公网IP
- 在GCP控制台创建外部HTTPS负载均衡,后端配置多个Backend Bucket分别对应你的不同存储桶,设置路径路由规则(如
- CarrierWave适配:无需调整签名逻辑,仅需将
fog_host和直传表单action替换为你的自定义域名,文件路径按照路由规则拼接即可 - 优势:支持任意数量存储桶共用同个域名,可开启CDN缓存加速下载,还能叠加WAF、访问限流等安全能力
方案3:自行部署反向代理(灵活度最高,自定义需求场景)
- 适用场景:有特殊合规要求、需要添加自定义请求审计/限流逻辑的场景
- 操作步骤:
- 用Nginx、Caddy等部署反向代理服务,参考Nginx配置如下:
server { listen 443 ssl; server_name storage.mycustomdomain.com; ssl_certificate /etc/ssl/mycustomdomain.pem; ssl_certificate_key /etc/ssl/mycustomdomain.key; # 按路径路由到不同GCS存储桶 location ~ ^/([^/]+)/(.*)$ { proxy_pass https://$1.storage.googleapis.com/$2; proxy_set_header Host $1.storage.googleapis.com; # 大文件直传必须关闭请求缓冲,避免超时 proxy_request_buffering off; proxy_max_temp_file_size 0; proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s; } }- DNS解析将
storage.mycustomdomain.com指向反向代理服务器的公网IP
- CarrierWave适配:和方案2一致,仅需替换域名即可,签名逻辑无需调整
适配注意事项
- 你使用的POST Object表单直传模式,仅需修改表单的
action地址为自定义域名,签名生成逻辑不需要任何改动 - 预签名下载/访问场景,生成预签名URL时同步替换endpoint为自定义域名即可正常使用
内容的提问来源于stack exchange,提问作者Josué Henrique F. da Silva
相关产品推荐
相关产品推荐

