Olá!
Meu site usa a versão 2.9 do Discourse. Por algum motivo, tive que usar um Nginx duplo para o Discourse. Implantei dois nós de contêiner web_only e usei um Nginx para fazer proxy na frente deles. Meu diagrama de arquitetura do sistema:
Fiquei confuso quando meu Nginx personalizado fez proxy para dois nós web_only e distribuiu aleatoriamente as solicitações para qualquer nó web_only, meu site Discourse às vezes relatava erros: Não foi possível encontrar o módulo ‘handlebars’ importado de ‘discurse-common/lib/raw-handlebars’, desta vez o navegador visita o site com tela em branco. Mas quando usei o Nginx personalizado para encaminhar todas as solicitações para apenas um dos nós web_only, esse erro não ocorreu. Pesquisei esse problema, houve alguns commits antes para resolver esse mesmo erro, confirmei que minha versão contém o código desses commits.
A propósito, compartilhe um problema em que o uso de Nginx duplo causa a impossibilidade de obter o endereço IP real do usuário.
Isso ocorre porque meu Nginx personalizado habilita o campo de cabeçalho X-Forwarded-For para obter o endereço IP do cliente, mas não desabilita o X-Forwarded-For do Nginx do Discourse. Faz com que a configuração X-Forwarded-For do Nginx personalizado seja substituída pelo Nginx do Discourse.
E não importa qual você usa? E eles estão executando a mesma imagem? Isso é desconcertante.
A única vantagem que vejo em executar dois contêineres assim no mesmo host é possibilitar atualizações sem tempo de inatividade. Como você não está atualizando com muita frequência, parece que você tem complexidade desnecessária.
Você precisa de algo como isto em seu web_only.yml:
Sim, não importa qual eu uso. Eles estão executando a mesma imagem web_only. Continuarei procurando por problemas usando o modo de segurança e, se houver alguma conclusão, relatarei aqui.
Desculpe pelo mal-entendido no meu diagrama de arquitetura de sistema, usei uma máquina diferente para implantar o web_only. O motivo pelo qual uso o double web_only é que meu contêiner web_only uma vez travou devido a muitas conexões, mas eu não descobri o motivo na época. Então, tentei usar o double web_only para evitar o mesmo problema novamente.
Obrigado, isso me ajudou a resolver o problema de obter o IP real do usuário.
Obrigado. No momento, ainda recebo o mesmo erro ao tentar depurar em modo de segurança. Estarei pronto para tentar atualizar meu discourse para ver se funciona.