Google Cloud Storage如何配置自定义域名实现Resumable uploads
GCS Resumable 断点续传自定义域名配置方法
两种自定义域名格式的配置都基于GCP负载均衡+后端存储桶的转发能力实现,不需要修改GCS本身的断点续传逻辑,具体配置如下:
前置准备
- 完成
uploads.mycustomdomain.com的域名所有权验证,申请对应域名的合法SSL证书 - 创建GCP外部HTTPS应用负载均衡,后端绑定目标存储桶
my-bucket,将uploads.mycustomdomain.com的DNS解析指向负载均衡的公网任播IP - 服务端初始化断点续传会话时,仍按原有逻辑向GCS官方端点发起请求获取合法
upload_id,后续仅对返回的上传URL做字符串替换即可,不要自行拼接upload_id
第一种格式:保留完整API路径(https://uploads.mycustomdomain.com/upload/storage/v1/b/my-bucket/o?...)
这个格式不需要做路径改写,配置步骤:
- 在负载均衡的路径路由规则中,添加路径匹配规则:匹配
/upload/storage/*路径的请求,直接转发到绑定的GCS后端桶,不做任何路径修改 - 服务端拿到GCS返回的默认断点续传URL后,仅将URL中的域名部分
https://storage.googleapis.com替换为https://uploads.mycustomdomain.com,生成的URL即可直接下发给客户端使用 - 确保负载均衡透传所有请求头、查询参数,不要对POST/PUT类上传请求做缓存
第二种格式:短路径形式(https://uploads.mycustomdomain.com/o?...)
这个格式需要在负载均衡层做路径重写,配置步骤:
- 在负载均衡的路径路由规则中,添加路径匹配规则:匹配
/o*路径的请求 - 给上述匹配规则配置路径重写策略:将请求路径的前缀
/o替换为/upload/storage/v1/b/my-bucket/o,转发到GCS后端桶 - 服务端拿到GCS返回的默认断点续传URL后,做两处替换:
- 将域名
https://storage.googleapis.com替换为https://uploads.mycustomdomain.com - 将URL中的路径段
/upload/storage/v1/b/my-bucket/o替换为/o
- 将域名
- 同样需要确保所有查询参数、请求头透传,上传路径绕过CDN缓存
常见踩坑点
- 不要直接向自定义域名发起断点续传初始化请求,必须先从GCS官方端点拿到合法会话的
upload_id再做URL替换,自己拼或者从自定义域名初始化拿的会话都是无效的 - 负载均衡不要开启请求体解压、参数过滤、请求修改类策略,会导致GCS对分片的校验不通过,续传中断
- 记得在存储桶的CORS规则里把
uploads.mycustomdomain.com加到允许来源列表,不然前端客户端上传会直接报跨域错误 - 如果给负载均衡挂了CDN,一定要给上传路径配置绕过缓存规则,POST/PUT类的上传请求被缓存的话会直接返回异常响应
内容的提问来源于stack exchange,提问作者SteveK
相关产品推荐
相关产品推荐

