我尝试上传自定义头像,上传成功了,但在请求 https://example.com/user_avatar/example.com/example_user/96/11_2.png 时,返回了 500 错误。默认的匿名头像没有这个问题。
最新的 master Discourse 分支。
我的 S3 存储使用了 Cloudflare R2。
我尝试上传自定义头像,上传成功了,但在请求 https://example.com/user_avatar/example.com/example_user/96/11_2.png 时,返回了 500 错误。默认的匿名头像没有这个问题。
最新的 master Discourse 分支。
我的 S3 存储使用了 Cloudflare R2。
您是否使用的是 unsupported-install?
无论如何,仅凭 500 错误信息不足以解决问题。请分享相关的日志信息,这样才可能有人能帮助您。
当然。顺便说一句,我使用了 Cloudflare R2(S3 兼容)来存储上传的内容,当我检查存储桶中的文件时,头像文件实际上就在那里,但客户端无法通过 https://example.com/user_avatar/example.com/example_user/96/11_2.png 访问它,这太奇怪了。
在 production.log 中,我发现了这一行:
Processing by UserAvatarsController#show as PNG
Parameters: {"hostname" => "echonet.icu", "username" => "where", "size" => "288", "version" => "12_2"}
Completed 418 in 599ms (Views: 4.1ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 0.4ms)
这可能与以下内容相关:
可能是最新版本 S3 的问题
。
好的,希望这只是当前 nightly 版本的一个问题。 通过设置代理解决了。
@avidseeker
当您使用 OSS 服务而您的服务器无法访问它时,例如,您在中国,而您服务器到 Cloudflare R2 的连接被本地 ISP 阻止。当客户端尝试获取自定义头像资源时,您的服务器必须从 OSS 获取,但失败,然后向客户端返回 500。
在我的例子中,设置两个环境变量:HTTP_PROXY 和 HTTPS_PROXY 指向一个能够访问您的 OSS 服务的代理服务器。如果您使用标准安装方式安装 Discourse,在您的 app.xml 中应该有一个名为 env 的字段,添加这两个变量,然后您就可以运行了。我使用了不受支持的安装方式,并使用 Systemd 来管理 Discourse,所以我向 .service 文件中添加了两个 Environment 参数。
我不知道您的国家是否有网络审查系统。如果有,我可以假设您已经知道该怎么做;如果没有,请检查您的 OSS 服务的在线状态以及您关于 S3 的设置。
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.