Avatares, logotipos de site e erros de certificado

Olá!

Configurei servidores Discourse em cerca de 5 instâncias até agora e todos parecem apresentar um comportamento estranho; não tenho certeza se se trata realmente de um bug ou se alguém mais já passou pelo mesmo.

Passos para Reproduzir

  • A configuração do servidor foi tranquila
  • A orientação do assistente inicial funcionou bem, todas as imagens foram carregadas e exibidas conforme o esperado
  • O usuário recebe o link de cadastro, clica para seguir e o registro é concluído com sucesso
  • (É aqui que as coisas dão errado) O usuário faz login e os logotipos do site estão todos quebrados — aparecendo apenas os títulos em texto
  • O usuário não consegue fazer upload ou atribuir um Avatar personalizado
  • O certificado do site reclama que o site não é seguro
  • Por alguma razão, isso AFETA APENAS o navegador usado para o cadastro e apresenta uma taxa de falha muito maior no Chrome

Solução de Problemas

  • Pedimos aos usuários que limpem o cache e os cookies do navegador — ainda está quebrado
  • Pedimos aos usuários que reinstalem os navegadores, principalmente o Chrome — ainda está quebrado
  • Pedimos às pessoas que usem uma identidade alternativa no Chrome ou tentem outro navegador (Safari, Firefox, etc.) — funciona!

Não temos absolutamente nenhuma ideia de por que o último item funciona e por que a identidade original de cadastro está com problemas. Não seria viável pedir aos nossos usuários (cerca de 600-700) que saiam de suas identidades do Chrome e entrem novamente — caso, por algum motivo, essa seja realmente a solução.

Alguma ideia?

Abraços,
Mark

É uma instalação padrão de 30 minutos? Ou há algo personalizado aqui?

Você ativou o force_https nas configurações do site para ver se isso resolve o problema?

Não consegui reproduzir seus passos no meu sandbox na branch mais recente, então seria muito útil se você pudesse compartilhar o link de uma das instâncias afetadas.

Olá Bahnu,

  • Instalação padrão de 30 minutos
  • Nada personalizado
  • Não ativei o force_https, mas, como disse, esse problema afeta apenas o navegador usado para o registro

Tente habilitar force_https. Tenho 99% de certeza de que isso resolverá o problema para você.

Ok. Todas as instâncias de instalação recebem seu certificado de um proxy reverso Nginx que NÃO é a mesma máquina. O force_https ainda fará diferença?

Então, não é uma instalação padrão. Você disse que era.

Se o Discourse estiver atrás de um proxy reverso corretamente configurado, a opção force_https certamente fará a diferença. A configuração essencialmente instrui o Discourse a carregar todos os recursos e ativos via HTTPS.

Tudo bem, peço desculpas.

Então, estamos falando de force_https no app.yml ou no bloco de servidor do meu Nginx?

Já estou passando o tráfego corretamente, mas não vejo a propriedade no arquivo yml.

Nem um nem outro.

force_https é uma configuração do site que você precisa ativar na área de administração.

Isso pode me bloquear o acesso?

A menos que seu proxy reverso esteja configurado incorretamente, não há absolutamente nada com o que se preocupar aqui.

Se você não tem certeza sobre a configuração do proxy reverso, dê uma olhada nesta configuração e compare com a sua

Funcionou, aliás. Trave-me fora. Ativar force_https corrigiu o problema com as imagens, MAS tornou impossível autenticar-se em navegadores com uma nova sessão. A sessão existente está ok, mas no momento em que você faz logout, não consegue mais entrar.

Há algo de errado com seu proxy reverso. Você precisará verificar sua configuração para garantir que tudo esteja configurado corretamente.

Acabei de fazer isso. Já configurei tudo no meu bloco de servidor exatamente como o artigo sugere. Isso provavelmente explica por que as sessões em perfis alternativos ou navegadores diferentes funcionam normalmente após o cadastro ou autenticação iniciais.

O único elemento em que minha configuração difere é que não estou usando o templates.yml.

Isso vai exigir MUITA mais investigação.

Certo. Estranho. Não alterei nada. Todas as imagens funcionam perfeitamente. Ponto.

Ainda estou recebendo o erro de certificado inválido apenas na instalação inicial, no navegador do usuário.

Isso pode ser cache do navegador ou um certificado mal configurado. Você obteve um SSL do Let’s Encrypt ou algum outro?

É o LetsEncrypt via Certbot. O certificado está válido. Acredito que seja o cache do navegador.

Tente registrar em modo anônimo. Você ainda recebe um erro?

E há uma coisa que estou assumindo como suspeita aqui. Você está usando algum tipo de autenticação externa? (login social / SSO etc.)

Não. Sem autenticação externa. Tentei na janela anônima. Sem sucesso. Mesmo resultado.
Deve ser algo no bloco do servidor. Vou investigar um pouco mais tarde.

pode compartilhar o link para uma dessas instalações?

Você baseou sua configuração do nginx na listada aqui?

Certifique-se de estar enviando X-Forwarded-Proto.