现在我有一批资源是放到阿里云 OSS 的,我希望在用户请求时,能够通过 Cloudflare Worker 存储到 R2 。
由于 R2 不支持从 OSS 回源取数据(只支持 S3 、Google )下面是我计划做的做法:
- 配置一个域名(称为 domainA )指向 R2 ;
- 配置一个域名(称为 domainB )指向特定的 Worker ,专门用于从 OSS 下载资源并上传到 R2 ;
- 设置 “转换规则( Transform Rules )”,当访问 domainA 且 response httpStatusCode = 404 的时候,执行:
2.a 增加 Header:Location ,指向 domainB + DomainA fullPath (去除 host 部分),这个我测试过可以达到预期;
2.b 增加 Header:status = 302 ,问题就在这里,Transform Rules 是不支持修改 status code 的;
我通过文档找到 custom-error-responses 这个产品,从文档来看似乎是支持修改响应状态码,并且还会保留其他响应 Header ,这样就可以达到 “修改 statusCode + 增加 Location” 的目的了。
不过我现在没有 PRO 套餐,个人买的话也不划算,我不确定 Transform Rules + custom-error-responses 是否可以协同达到我的预期目标。
如果你有 Cloudflare PRO 套餐的话,请帮忙验证下是否能够满足我说的这个需求,如果确认可以,请加我微信(就是我的用户名),我给红包,不胜感激。
为什么不全用 Worker ,目的还是节省经费,我上面的方案是当资源 404 的时候才会走 worker 搬运资源的逻辑,所以成本会少很多。
|