Não é possível ativar o DiscourseID em um site com force-https desativado

Para contexto, tenho meu site de teste do Discourse rodando em um container Proxmox atrás do Nginx (npmplus) em um servidor diferente na mesma rede (mas não na mesma sub-rede). Nada realmente especial. Tentei habilitar force-https, mas continuei recebendo vários erros de validação CSRF, então desabilitei novamente porque não valia a pena lutar. Independentemente disso, o site funciona bem em HTTPS, pois tanto o Nginx quanto o Cloudflare estão configurados corretamente para isso:

Tentei habilitar o DiscourseID no site agora, mas fui confrontado com um erro:


Existe uma solução alternativa que não envolva lutar com o npmplus por horas para que a validação CSRF do Discourse pare de reclamar de tudo? Este tópico não é para depurar o npmplus ou SSL; eu simplesmente quero corrigir o Discourse ID.

A mensagem de erro “Discourse ID returned” está reclamando que o Redirect URI do site deve ser https, então você precisa ativar force_https ou, de outra forma, indicar através da configuração do seu proxy que as solicitações estão chegando via https.

Exceto para tudo o que não funciona:

3 curtidas

Huh, acho que nunca notei nada disso. Como disse, tentei ativar force_https, mas continuava recebendo erros de CSRF ao fazer qualquer coisa. Talvez as variáveis normais do nginx simplesmente não funcionem no npmplus (de acordo com as instruções que dizem isso logo acima), já que esta é a configuração que eu estava usando:

Além disso, a porta 443 no meu CT não estava respondendo, então ainda está conectando localmente na porta 80.

Você deve corrigir sua configuração de proxy reverso e fazer o HTTPS funcionar corretamente.

1 curtida

Acho que o problema agora é apenas uma estranheza com as variáveis que o npmplus está expondo. Eu tinha uma configuração funcional antes, mas a perdi e não tenho certeza do que fazer no momento. Optei pela seguinte configuração, mas não quero ativar a definição até ter 100% de certeza de que funcionará, para evitar BAD CSRF e ter que ir ao console do Rails para corrigi-la novamente.



Curiosamente, parece que está apenas rejeitando tráfego acima da porta 443, o que não acho normal, mesmo que o proxy esteja configurado para a porta 80 no momento.

Não é possível dessreferenciar este ponteiro - acredito que você esteja falando do container do Discourse?

force_https não afeta se o Discourse serve na porta 443 (HTTPS); ele apenas informa ao Discourse que ele deve assumir que está sempre sendo acessado via https.

1 curtida