第19章 Backblaze B2(兼容 S3)存储配置指南
Backblaze B2(兼容 S3)
使用 Backblaze B2 存储文件,并采用兼容 S3 的存储策略。
配置
在 Backblaze B2 控制台创建一个 Bucket,然后进入“Application Keys”页面,创建一组具有读写权限的访问密钥。
在 Cloudreve 中创建一个兼容 S3 的存储策略,并按以下规则填写信息: * 存储策略中的 Bucket 名称:填写刚刚创建的 Bucket 名称。 * 存储策略中的 Endpoint:填写从 Bucket 列表中获取的 Endpoint,并在开头添加 `https://`,例如 `https://s3.us-east-003.backblazeb2.com`。 * 存储策略中的 Region:填写从 Endpoint 中观察到的区域代码,例如 `us-east-003`。 * 存储策略中的访问凭证:填写刚刚创建的访问密钥中的 keyID 和 applicationKey。请确保前后没有多余的空格。
CORS 策略
在使用 Cloudreve Web 界面上传或浏览文件之前,需要为 Bucket 配置 CORS 策略。通常,在添加存储策略时,可以让 Cloudreve 自动配置 CORS 策略。
如果需要手动配置,请根据 Backblaze 文档下载 B2 CLI 工具,然后执行 `./b2-linux account authorize` 登录账户。(可以使用上面创建的 keyID 和 applicationKey)
根据提示填入 keyID 和 applicationKey,然后执行以下命令以修改 Bucket 的 CORS 配置:
```bash
./b2-linux bucket update
反向代理私有 Bucket 的下载请求
如果需要反向代理私有存储 Bucket 的下载请求,请在存储策略设置中启用“Use CDN for download traffic”选项,并在“Download CDN”字段中填入你的自定义域名。
配置反向代理时,请注意以下几点: * 反向代理的目标是不包含 Bucket 名称的 B2 Endpoint,例如 `https://s3.us-west-004.backblazeb2.com`。 * 上游请求中需要覆盖 Host 头,例如 `Host: s3.us-west-004.backblazeb2.com`。 * 在 Cloudreve 存储策略配置中,需要启用“Force path style”选项。
例如,以下是 Caddy 配置示例:
```caddy reverse_proxy { to https://s3.us-west-004.backblazeb2.com header_up Host s3.us-west-004.backblazeb2.com } ```
常见问题
上传错误:Request failed: AxiosError: Network Error * 检查用户能否连接到 Backblaze B2 Bucket 的 Endpoint。 * 检查 CORS 策略是否正确配置。 * 检查“设置 -> 文件系统 -> 上传会话 TTL(秒)”,其值应小于 604800。
传输上传失败,错误:Unable to parse response * 展开详细错误信息,检查错误消息中是否包含 `413 Request Entity Too Large`。 * 如果是,请修改 Nginx 反向代理配置,设置或增加 `client_max_body_size` 的值,例如 `client_max_body_size 20000m;`。该设置值应大于正在上传的文件大小。 * 检查是否有外部 WAF 防火墙拦截了上传请求。
添加 CORS 策略错误:Failed to create cors: InvalidRequest: The bucket contains B2 Native CORS rules. * 进入 B2 Bucket 的 CORS 策略设置,禁用内置的 CORS 策略,然后再次尝试在 Cloudreve 中添加 CORS 策略。