Cambiare force_https non aggiorna l'URL delle immagini caricate causando un avviso di contenuto misto

Ho appena abilitato force_https sulla mia installazione di Discourse. La terminazione HTTPS è gestita da un reverse proxy posto davanti a Discourse. L’attivazione di force_https converte la maggior parte dei collegamenti interni di Discourse in HTTPS, ma non quelli relativi alle immagini già esistenti, in particolare i favicon e il logo. Ora, quando accedo al mio sito tramite HTTPS, ricevo un avviso di contenuto misto a causa delle immagini non HTTPS incluse.

I collegamenti possono essere resi HTTPS ricaricando le immagini o eseguendo SiteIconManager.ensure_optimized! dalla console di Rails; apparentemente, il collegamento viene memorizzato in qualche cache e non viene aggiornato quando force_https viene modificato.

Discourse dovrebbe aggiornare i collegamenti alle immagini caricate (e probabilmente a tutti i file caricati) quando force_https viene attivato o disattivato. O anche meglio sarebbe non includere lo schema in quei collegamenti, anche se non so se ciò sia possibile.

2 Mi Piace

Come hai installato? Force_https è attivo di default da un bel po’ di tempo.

3 Mi Piace

Costruisco immagini Docker (separate per web_only e data) con il repository discourse_docker ed eseguo le immagini in un cluster Kubernetes dietro un proxy che gestisce la terminazione HTTPS. Il contenitore Discourse ascolta solo sulla porta 80 e non ho abilitato i template SSL e Let’s Encrypt nel file di configurazione del contenitore. Sembra che il template Let’s Encrypt sia ciò che imposta force_https su true, quindi per la mia configurazione non era abilitato di default.

Non esattamente: viene abilitato al momento del provisioning, ma l’impostazione predefinita del sito è false.

Ho anche visto persone disabilitare l’impostazione del sito mentre cercavano di risolvere problemi, poiché viene mostrata come un’impostazione ‘modificata’.

2 Mi Piace

Assicurati che il tuo proxy invii tutte le intestazioni necessarie impostate nelle configurazioni nginx qui:

In particolare, X-Forwarded-Proto spesso non è incluso di default.

3 Mi Piace

Questo è un problema anche se il proxy invia l’header X-Forwarded-Proto e altro.

Attivare l’impostazione del sito force_https non aggiornerà il protocollo dell’URL del logo finché la cache di icon_manager non sarà stata svuotata. Aggiungere force_https alle impostazioni monitorate per l’icon manager è probabilmente la soluzione più semplice.

6 Mi Piace

Esatto! Se esegui un’installazione standard, viene impostato automaticamente, motivo per cui sospettavo che questa non fosse un’installazione standard.

Sono quasi certo che sul sito GKE che amministro sia impostato tramite una variabile d’ambiente DISCOURSE_FORCE_HTTPS e funzioni come previsto. Ma è passato molto tempo da quando l’ho configurato, quindi potrei dimenticare qualcosa.

5 Mi Piace

Ho controllato questa impostazione Force HTTPS e l’ho riattivata.
Funziona per me.

1 Mi Piace