사용자의 사용자 지정 아바타 요청 시 500 오류 반환됨

커스텀 아바타를 업로드하려고 했는데, 업로드 자체는 성공적으로 완료되었지만 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" => "example.com", "username" => "example_user", "size" => "288", "version" => "12_2"}
Completed 418  in 599ms (Views: 4.1ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 0.4ms)

이 문제는 다음과 관련이 있을 수 있습니다:

최신 버전에서 S3 관련 문제일 수 있습니다 :thinking:.

음, 현재 나이트리 버전에만 있는 문제였으면 좋겠는데. 프록시를 설정하면 해결됩니다.

@MoRanYue님, 어떻게 해결하셨는지 좀 더 자세히 설명해 주실 수 있을까요?

저도 같은 문제를 겪고 있습니다.

감사합니다.

@avidseeker
OSS 서비스를 사용 중인데 서버가 해당 서비스에 접근할 수 없는 경우, 예를 들어 중국에 계셔서 로컬 ISP에 의해 Cloudflare R2로의 서버 연결이 차단된 경우를 생각해 보세요. 클라이언트가 커스텀 아바타 리소스를 요청하면 서버는 OSS에서 해당 리소스를 가져와야 하지만, 이 과정이 실패하면 클라이언트에게 500 에러를 반환하게 됩니다.

제 경우에는 HTTP_PROXYHTTPS_PROXY라는 두 개의 환경 변수를 설정하여 OSS 서비스에 접근할 수 있는 프록시 서버를 지정했습니다. 표준 설치 방식으로 Discourse를 설치하셨다면 app.xml 파일에 env라는 필드가 있을 텐데, 여기에 두 변수를 추가한 후 실행하면 됩니다. 저는 비공식(unsupported) 설치 방식을 사용했고 Systemd로 Discourse를 관리하고 있으므로, .service 파일에 Environment 파라미터 두 개를 추가했습니다.

귀하의 국가에 네트워크 검열 시스템이 있는지 알 수 없습니다. 만약 있다면 이미 어떻게 해야 하는지 아실 것이라 생각합니다. 그렇지 않다면 OSS 서비스의 온라인 상태와 S3 관련 설정을 확인해 보세요.