방금 Discourse 설치 환경에서 force_https를 활성화했습니다. HTTPS 종단은 앞단에 있는 리버스 프록시에서 처리됩니다. force_https를 활성화하면 Discourse의 내부 링크 대부분이 HTTPS로 전환되지만, 이미 업로드된 이미지와 특히 파비콘 및 로고의 링크는 제외됩니다. 이로 인해 HTTPS로 사이트를 접근할 때 HTTPS가 아닌 이미지가 포함되어 혼합 콘텐츠(mixed content) 경고가 발생합니다.
이미지를 다시 업로드하거나 Rails 콘솔에서 SiteIconManager.ensure_optimized!를 실행하면 링크가 HTTPS로 변경되므로, 링크가 어딘가에 캐시되어 force_https가 변경될 때 업데이트되지 않는 것으로 보입니다.
force_https가 토글될 때 Discourse는 업로드된 이미지(그리고 아마도 모든 업로드 파일)의 링크를 업데이트해야 합니다. 더 나은 방법은 해당 링크에 스킴(scheme)을 포함하지 않는 것이겠지만, 이것이 가능한지 모르겠습니다.
discourse_docker 저장소를 사용하여 Docker 이미지(웹 전용과 데이터로 분리)를 빌드하고, HTTPS 종단을 처리하는 프록시 뒤에 있는 Kubernetes 클라우드에서 해당 이미지를 실행하고 있습니다. Discourse 컨테이너는 80 포트에서만 리스닝하며, 컨테이너 구성 파일에서 SSL 및 Let’s Encrypt 템플릿을 활성화하지 않았습니다. Let’s Encrypt 템플릿이 force_https를 true로 설정하는 것 같아, 제 환경에서는 기본적으로 활성화되어 있지 않았습니다.