Skip to content

[BUG] S3 service 返回的302重定向导致Restic备份失败 #2947

Description

@jibwf

请确认以下事项

  • 我已确认阅读并同意 AGPL-3.0 第15条
    本程序不提供任何明示或暗示的担保,使用风险由您自行承担。

  • 我已确认阅读并同意 AGPL-3.0 第16条
    无论何种情况,版权持有人或其他分发者均不对使用本程序所造成的任何损失承担责任。

  • 我确认我的描述清晰,语法礼貌,能帮助开发者快速定位问题,并符合社区规则。

  • 我已确认阅读了OpenList文档

  • 我已确认没有重复的问题或讨论。

  • 我已确认是OpenList的问题,而不是其他原因(例如 网络依赖操作)。

  • 我认为此问题必须由OpenList处理,而非第三方。

  • 我已确认这个问题在最新版本中没有被修复。

  • 我没有阅读这个清单,只是闭眼选中了所有的复选框,请关闭这个 Issue 。

OpenList 版本(必填)

v4.2.5

使用的存储驱动(必填)

139

问题描述(必填)

#2598(支持直链重定向)合并后,自建的 S3 服务在处理文件访问(如读取密钥或数据块)时会返回 302 Found。然而,Restic 备份客户端(基于 Go 语言的 S3 SDK 开发)严格遵循 S3 标准,无法处理元数据和密钥文件的 HTTP 302 重定向。Restic 会将 302 报错拦截为 API 失败,并在 restic unlock 或初始化时陷入无限重试死循环。回退到 #2598 之前的版本问题消失(旧版使用 200 OK 中转数据)。

预期行为:OpenList S3 服务应该:1. 提供一个开关,允许对 S3 API 彻底关闭直链重定向(强制走 Proxy 中转模式);2. 或者针对特定路径(如包含 /keys/ 的请求)智能跳过 302 重定向,以兼容 Restic 等标准 S3 工具链。

日志(必填)

错误: auto unlock repo "mobile": command "/bin/restic unlock -o sftp.args=-oBatchMode=yes" failed: exit status 1
Output:
Load(<key/966ebf3488>, 0, 0) returned error, retrying after 1.479536169s: 302 Found
Load(<key/966ebf3488>, 0, 0) returned error, retrying after 1.047184113s: 302 Found
Load(<key/966ebf3488>, 0, 0) returned error, retrying after 2.196888528s: 302 Found
Load(<key/966ebf3488>, 0, 0) returned error, retrying after 11.047023065s: 302 Found
Load(<key/966ebf3488>, 0, 0) returned error, retrying after 19.236361372s: 302 Found
Load(<key/966ebf3488>, 0, 0) returned error, retrying after 41.677105785s: 302 Found
Load(<key/966ebf3488>, 0, 0) returned error, retrying after 1m21.802053535s: 302 Found

配置文件内容(必填)

不必要

复现链接(可选)

No response

AI生成内容(可选)

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions