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.
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.
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.
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.