S3/R2에서 로드된 사용자 정의 이모지는 CDN 라우팅을 우회합니다

와, 정말 험난한 여정이었다. 결국 Cloudflare R2 객체 스토리지와 Discourse 인스턴스를 전체적으로 재구성했는데, 이 버그가 R2 관련인 것 같아. Cloudflare DNS 레코드를 수정하고 인스턴스를 재빌드해서 DISCOURSE_CDN_URL이 실제로 해당 주소를 가리키도록 했더니, 번역 문자열 같은 다른 여러 가지가 깨지고 콘솔에 CORS 오류를 포함한 여러 오류가 발생했다. 오늘 하루 종일 엉뚱한 방향으로 빠져들었다. 그래서 DISCOURSE_CDN_URL 사용이 Cloudflare R2와 호환되지 않는 것 같다. (이게 정말 이상했는데, 원래 DNS 항목을 설정할 때 cdn.mysite.com DNS 레코드를 잘못 입력해서 cdn.mysite.com.mysite.com으로 해석되게 되어 있었다.) DISCOURSE_CDN_URL을 올바르게 설정하는 것이 Cloudflare R2 객체 스토리지와 호환되지 않는 것으로 보인다. 여기서 내가 완전히 이해하지 못하는 부분이 더 있을 수도 있다.

어쨌든, 내 PR 브랜치로 재빌드하면 Discourse.store.cdn_url()로 할당을 감싸서 커스텀 이모지 업로드가 표준 게시물 이미지 업로드와 동일한 S3 CDN 라우팅 및 폴백 로직을 따르도록 했기 때문에 모든 것이 정상으로 돌아온다.

PR을 다시 열고 설명을 수정했다. 하지만 Discourse 팀이 이를 병합하지 않기로 결정해도 괜찮다. 왜냐하면 테마 컴포넌트가 클라이언트 레벨에서 문제를 해결해주기 때문이다. 참고로 PR 수정 사항은 커스텀 이모지를 위한 R2 객체 스토리지 설정에만 영향을 미치며, AWS 같은 다른 일반적인 S3 호환 환경에는 영향을 미치지 않는다.

3개의 좋아요