Cambiar force_https no actualiza la URL de las imágenes cargadas, lo que provoca una advertencia de contenido mixto

Acabo de habilitar force_https en mi instalación de Discourse. La terminación de HTTPS está gestionada por un proxy inverso situado delante de él. Al activar force_https, la mayoría de los enlaces internos de Discourse cambian a https, pero no ocurre lo mismo con las imágenes ya existentes, en concreto con los favicons y el logotipo. Ahora, al acceder a mi sitio mediante https, aparece una advertencia de contenido mixto debido a que se incluyen imágenes que no usan https.

Los enlaces pueden convertirse a https volviendo a subir las imágenes o ejecutando SiteIconManager.ensure_optimized! desde la consola de Rails; por lo tanto, parece que el enlace está almacenado en caché en algún lugar y no se actualiza al cambiar force_https.

Discourse debería actualizar los enlaces a las imágenes subidas (y probablemente a todas las cargas) cuando se active o desactive force_https. O, incluso mejor, sería no incluir el esquema en esos enlaces, aunque no sé si eso es posible.

2 Me gusta

¿Cómo lo instalaste? Force_https está habilitado por defecto desde hace bastante tiempo.

3 Me gusta

Construyo imágenes de Docker (separando web_only y data) con el repositorio discourse_docker y ejecuto las imágenes en una nube de Kubernetes detrás de un proxy que gestiona la terminación de HTTPS. El contenedor de Discourse solo escucha en el puerto 80 y no habilité las plantillas de SSL y Let’s Encrypt en el archivo de configuración del contenedor. Parece que la plantilla de Let’s Encrypt es la que establece force_https en true, por lo que para mi configuración no estaba habilitada de forma predeterminada.

No del todo; se habilita al aprovisionar, pero la configuración predeterminada del sitio es false.

También he visto que la gente deshabilita la configuración del sitio mientras intenta solucionar problemas, porque se muestra como una configuración ‘modificada’.

2 Me gusta

Asegúrate de que tu proxy envíe todas las cabeceras necesarias establecidas en las configuraciones de nginx aquí:

En particular, X-Forwarded-Proto a menudo no se incluye de forma predeterminada.

3 Me gusta

Esto es un problema incluso si el proxy envía la cabecera X-Forwarded-Proto y demás.

Alternar la configuración del sitio force_https no actualizará el protocolo de la URL del logotipo hasta que se haya limpiado la caché de icon_manager. Agregar force_https a las configuraciones observadas para el administrador de iconos es probablemente la solución más sencilla.

6 Me gusta

¡Correcto! Si realizas una instalación estándar, se configura automáticamente, por eso sospeché que esta no era una instalación estándar.

Estoy bastante seguro de que en el sitio de GKE que administro se establece con una variable de entorno DISCOURSE_FORCE_HTTPS y funciona como se espera. Pero pasó mucho tiempo desde que lo configuré, así que podría estar olvidando algo.

5 Me gusta

Verifiqué esta configuración de Forzar HTTPS y la volví a activar. Funcionó para mí.

1 me gusta