Ocorre um erro ao construir Discourse via HTTP

  1. Configuração de domínio concluída
  2. Instância AWS EC2 criada
  3. Certificado emitido usando ACM
  4. Configurou 443 e conectou o certificado via ALB
  5. ALB roteia o tráfego do domínio para a instância EC2 na porta 80

Antes de construir o Discourse, modifiquei o arquivo app.yml para configurar conexões HTTP:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Descomente a próxima linha para habilitar o ouvinte IPv6
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Descomente estas duas linhas se desejar adicionar o Lets Encrypt (https)
  #- "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"

## quais portas TCP/IP este contêiner deve expor?
## Se você quiser que o Discourse compartilhe uma porta com outro servidor web como Apache ou nginx,
## veja https://meta.discourse.org/t/17247 para detalhes
expose:
  - "80:80"   # http
 #- "443:443" # https

Após fazer as alterações, construí o Discourse e verifiquei a configuração, mas o nginx continua solicitando uma chave SSL com o seguinte erro:

[emerg] 7416#7416: cannot load certificate "/shared/ssl/discourse.xxxxxxx.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0480006C:PEM routines::no start line:Expecting: TRUSTED CERTIFICATE)

Existe alguma maneira de impedir que o nginx tente carregar a chave ou de fazer o nginx funcionar corretamente via HTTP?

O erro acontece porque o Nginx ainda está procurando por um certificado SSL, mas o seu ALB está lidando com o SSL. Veja como corrigir:

  1. Verifique seu app.yml: Parece que você já desativou os modelos SSL, então pode pular esta etapa.

  2. Reconstrua o Discourse: Execute ./launcher rebuild app para aplicar as alterações.

  3. Verifique as configurações do Nginx: Dentro do contêiner, examine a configuração do Nginx e certifique-se de que não haja linhas SSL (ssl_certificate, ssl_certificate_key). Se encontrar alguma, remova-a e reinicie o Nginx com sv restart nginx.

  4. Verifique a configuração do seu ALB: Certifique-se de que seu ALB esteja encerrando o SSL na porta 443 e encaminhando o HTTP (porta 80) para o seu EC2.

Isso deve impedir que o Nginx procure o certificado SSL, e tudo deve funcionar bem via HTTP!

Obrigado. Resolvi o problema com base no conteúdo relacionado e em outros comentários.