Alterar force_https não atualiza a URL das imagens carregadas, causando um aviso de conteúdo misto

Acabei de habilitar o force_https na minha instalação do Discourse. A terminação do HTTPS é tratada por um proxy reverso na frente dele. Ao habilitar o force_https, a maioria dos links internos do Discourse é alterada para HTTPS, mas não os de imagens já existentes e, especificamente, os favicons e o logotipo. Agora, ao acessar meu site via HTTPS, aparece um aviso de conteúdo misto devido às imagens não HTTPS incluídas.

Os links podem ser alterados para HTTPS reenviando as imagens ou executando SiteIconManager.ensure_optimized! no console do Rails, o que indica que o link está sendo armazenado em cache em algum lugar e não é atualizado quando o force_https é alterado.

O Discourse deveria atualizar os links das imagens enviadas (e provavelmente de todos os uploads) quando o force_https for alternado. Ou, ainda melhor, não incluir o esquema nesses links, embora eu não saiba se isso é possível.

2 curtidas

Como você instalou? Force_https está ativado por padrão há bastante tempo.

3 curtidas

Eu crio imagens do Docker (separando web_only e data) usando o repositório discourse_docker e executo essas imagens em um cluster Kubernetes atrás de um proxy que faz a terminação HTTPS. O contêiner do Discourse escuta apenas na porta 80, e não ativei os templates de SSL e Let’s Encrypt no arquivo de configuração do contêiner. Parece que o template do Let’s Encrypt é o que define force_https como verdadeiro, então, para minha configuração, ele não foi ativado por padrão.

Não totalmente, ele é habilitado durante o provisionamento, mas a configuração padrão do site é false.

Também já vi pessoas desabilitando a configuração do site ao tentar solucionar problemas, pois ela aparece como uma configuração ‘alterada’.

2 curtidas

Certifique-se de que seu proxy está enviando todos os cabeçalhos necessários configurados nas configurações do nginx aqui:

Em particular, o X-Forwarded-Proto frequentemente não é incluído por padrão.

3 curtidas

Isso é um problema mesmo que o proxy esteja enviando o cabeçalho X-Forwarded-Proto e tudo mais.

Alternar a configuração do site force_https não atualizará o protocolo da URL do logotipo até que o cache do icon_manager seja limpo. Adicionar force_https às configurações monitoradas para o gerenciador de ícones é provavelmente a solução mais fácil.

6 curtidas

Certo! Se você fizer uma instalação padrão, ele é definido automaticamente, por isso suspeitei que esta não fosse uma instalação padrão.

Tenho quase certeza de que no site GKE que eu gerencio, ele é definido com uma variável de ambiente DISCOURSE_FORCE_HTTPS e funciona conforme o esperado. Mas faz muito tempo que configurei isso, então posso estar esquecendo algo.

5 curtidas

Verifiquei essa configuração de forçar HTTPS e a reativei.
Funcionou para mim.

1 curtida