我按照这里的某些指南在我的网站上配置 R2,但现在当我尝试上传文件时,只看到一条通用的“抱歉,您的上传失败。请重试。”消息。我在日志中看到的唯一内容是:
我已在 app.yml 文件中配置了我的 URL,因为 Web 界面拒绝了我按照操作指南帖子中所述格式设置的 URL(格式无效):

CDN_URL 是自定义域名(在 Cloudflare 中设置),S3_ENDPOINT 是 Web 面板中的 URL。我已正确配置了所有选项,并创建了正确的身份验证令牌:
看起来 Cloudflare 确实看到了一些请求,但没有任何内容被存储。
问题出在哪里?
嘿,
这是否是因为 S3 CDN URL 和 S3 端点末尾的斜杠(/)?
Lilly
(Lillian )
3
我删除了末尾的斜杠,但还是不行。仍然出现 Unauthorized(未授权)错误。
Token 的配置也没问题。
Lilly
(Lillian )
6
你确定 Cloudflare R2 令牌具有读写权限吗?你还正确配置了 CORS 策略吗?我知道你的服务器配置有些独特,Cloudflare 存储桶的权限和配置必须完全正确,否则会抛出权限错误。
Lilly
(Lillian )
7
你创建的是错误类型的 Token —— 你使用的是通用 API Token。你需要创建一个 R2 Bucket Token:
- 进入 Cloudflare 控制台 → R2 对象存储(左侧边栏中的
storage & databases 下)。
- 在 R2 概览页面的右侧,点击
manage R2 API tokens(管理 R2 API Token)。
- 点击
create API token(创建 API Token)。
- 将权限设置为
object read & write(对象读取和写入),然后点击 save(保存)。
- 这将生成一个
access key id 和一个 secret access key。你需要将这两个值填入 Discourse 的 S3 配置中。
另外,是的,你需要删除末尾的斜杠,因为 Discourse 很可能会拒绝带有尾部斜杠的值。
谢谢,原来问题出在这里……虽然让人困惑,但这是Cloudflare的锅
Lilly
(Lillian )
9
是啊,Cloudflare 仪表盘的配置选项简直像个马蜂窝,哈哈。很高兴你把它搞定了!