我按照这里的某些指南在我的网站上配置 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(API Tokens)。
- 点击
create account API token。
- 输入合适的 Token 名称,并将权限设置为
object read & write,然后点击 save。
- 系统将输出一个
access key id 和一个 secret access key。你需要将这两个值填入 Discourse 的 S3 配置中。
另外,是的,你需要删除末尾的斜杠,因为 Discourse 很可能会拒绝它们。
谢谢,原来问题出在这里……真是无谓的困惑,但这得怪 Cloudflare。
Lilly
(Lillian )
9
是的,Cloudflare 仪表盘的配置确实像马蜂窝一样复杂,哈哈。很高兴你解决了这个问题!