Changer force_https ne met pas à jour l'URL des images téléchargées, provoquant un avertissement de contenu mixte

Je viens d’activer force_https sur mon installation Discourse. La terminaison HTTPS est gérée par un proxy inverse placé devant. L’activation de force_https fait passer la plupart des liens internes de Discourse en HTTPS, mais pas ceux des images déjà existantes, notamment les favicons et le logo. Ainsi, lorsque j’accède à mon site via HTTPS, un avertissement de contenu mixte apparaît en raison de l’inclusion d’images non sécurisées.

Il est possible de rendre ces liens en HTTPS en réuploadant les images ou en exécutant SiteIconManager.ensure_optimized! depuis la console Rails. Il semble donc que le lien soit mis en cache quelque part et ne soit pas mis à jour lorsque force_https est modifié.

Discourse devrait mettre à jour les liens vers les images uploadées (et probablement tous les uploads) lorsque force_https est activé ou désactivé. Encore mieux serait de ne pas inclure le schéma dans ces liens, bien que je ne sache pas si cela est possible.

2 « J'aime »

Comment l’avez-vous installé ? Force_https est activé par défaut depuis pas mal de temps maintenant.

3 « J'aime »

Je construis des images Docker (séparées web_only et data) avec le dépôt discourse_docker, et j’exécute ces images dans un cluster Kubernetes derrière un proxy qui gère la terminaison HTTPS. Le conteneur Discourse n’écoute que sur le port 80, et je n’ai pas activé les modèles SSL et Let’s Encrypt dans le fichier de configuration du conteneur. Il semble que le modèle Let’s Encrypt soit ce qui définit force_https à true, donc pour ma configuration, cette option n’était pas activée par défaut.

Pas tout à fait, il est activé lors de la mise en provision, mais le paramètre du site par défaut est false.

J’ai également vu des gens désactiver le paramètre du site en tentant de résoudre des problèmes, car il est affiché comme un paramètre « modifié ».

2 « J'aime »

Assurez-vous que votre proxy envoie tous les en-têtes nécessaires définis dans les configurations nginx ici :

En particulier, X-Forwarded-Proto n’est souvent pas inclus par défaut.

3 « J'aime »

C’est un problème, même si le proxy envoie l’en-tête X-Forwarded-Proto et tout le reste.

Basculer le paramètre du site force_https ne mettra pas à jour le protocole de l’URL du logo tant que le cache icon_manager n’aura pas été vidé. Ajouter force_https aux paramètres surveillés pour le gestionnaire d’icônes est probablement la solution la plus simple.

6 « J'aime »

Exactement ! Si vous effectuez une installation standard, il est défini automatiquement, c’est pourquoi je soupçonnais que ce n’était pas une installation standard.

Je suis presque certain que sur le site GKE que je gère, il est défini avec une variable d’environnement DISCOURSE_FORCE_HTTPS et cela fonctionne comme prévu. Mais cela fait longtemps que je l’ai configuré, donc je pourrais oublier quelque chose.

5 « J'aime »

J’ai vérifié ce paramètre de force HTTPS et je l’ai réactivé.
Cela a fonctionné pour moi.

1 « J'aime »