force_https를 변경해도 업로드된 이미지의 URL이 업데이트되지 않아 혼합 콘텐츠 경고가 발생합니다

방금 Discourse 설치 환경에서 force_https를 활성화했습니다. HTTPS 종단은 앞단에 있는 리버스 프록시에서 처리됩니다. force_https를 활성화하면 Discourse의 내부 링크 대부분이 HTTPS로 전환되지만, 이미 업로드된 이미지와 특히 파비콘 및 로고의 링크는 제외됩니다. 이로 인해 HTTPS로 사이트를 접근할 때 HTTPS가 아닌 이미지가 포함되어 혼합 콘텐츠(mixed content) 경고가 발생합니다.

이미지를 다시 업로드하거나 Rails 콘솔에서 SiteIconManager.ensure_optimized!를 실행하면 링크가 HTTPS로 변경되므로, 링크가 어딘가에 캐시되어 force_https가 변경될 때 업데이트되지 않는 것으로 보입니다.

force_https가 토글될 때 Discourse는 업로드된 이미지(그리고 아마도 모든 업로드 파일)의 링크를 업데이트해야 합니다. 더 나은 방법은 해당 링크에 스킴(scheme)을 포함하지 않는 것이겠지만, 이것이 가능한지 모르겠습니다.

2개의 좋아요

어떻게 설치하셨나요? Force_https는 꽤 오래전부터 기본적으로 활성화되어 있습니다.

3개의 좋아요

discourse_docker 저장소를 사용하여 Docker 이미지(웹 전용과 데이터로 분리)를 빌드하고, HTTPS 종단을 처리하는 프록시 뒤에 있는 Kubernetes 클라우드에서 해당 이미지를 실행하고 있습니다. Discourse 컨테이너는 80 포트에서만 리스닝하며, 컨테이너 구성 파일에서 SSL 및 Let’s Encrypt 템플릿을 활성화하지 않았습니다. Let’s Encrypt 템플릿이 force_https를 true로 설정하는 것 같아, 제 환경에서는 기본적으로 활성화되어 있지 않았습니다.

전적으로 그렇지는 않습니다. 프로비저닝 시 활성화되지만, 기본 사이트 설정값은 false입니다.

문제를 해결하려고 할 때 이 설정이 '변경됨’으로 표시되므로, 사이트 설정을 비활성화하는 경우를 본 적도 있습니다.

2개의 좋아요

여기서 설정된 nginx 설정에 포함된 모든 필요한 헤더가 프록시에서 전송되고 있는지 확인하십시오:

특히, X-Forwarded-Proto 헤더는 기본적으로 포함되지 않는 경우가 많습니다.

3개의 좋아요

프록시가 X-Forwarded-Proto 헤더를 전송하는 등 모든 조건이 갖춰져 있더라도 이 문제는 발생합니다.

force_https 사이트 설정을 토글해도 icon_manager 캐시가 해제되기 전까지는 로고 URL 프로토콜이 업데이트되지 않습니다. 아이콘 매니저의 감시 대상 설정에 force_https를 추가하는 것이 가장 쉬운 해결책일 것입니다.

6개의 좋아요

맞습니다! 표준 설치를 수행하면 자동으로 설정되므로, 이것이 표준 설치가 아니라고 의심했던 것입니다.

제가 관리하는 GKE 사이트에서는 DISCOURSE_FORCE_HTTPS 환경 변수로 설정되어 있으며, 예상대로 잘 작동합니다. 다만 해당 설정을 구성한 지 꽤 오래되었기 때문에, 무언가를 잊고 있을 수도 있습니다.

5개의 좋아요

이 Force HTTPS 설정을 확인하고 다시 활성화했습니다.
저한테는 잘 작동했습니다.

1개의 좋아요