Se produce un error al construir Discourse a través de HTTP

  1. Configuración de dominio completada
  2. Instancia de AWS EC2 creada
  3. Certificado emitido usando ACM
  4. Se configuró el puerto 443 y se conectó el certificado a través de ALB
  5. ALB enruta el tráfico del dominio a la instancia EC2 en el puerto 80

Antes de compilar Discourse, modifiqué el archivo app.yml para configurar las conexiones HTTP:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Descomenta la siguiente línea para habilitar el oyente IPv6
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Descomenta estas dos líneas si deseas agregar Lets Encrypt (https)
  #- "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"

## ¿Qué puertos TCP/IP debe exponer este contenedor?
## Si deseas que Discourse comparta un puerto con otro servidor web como Apache o nginx,
## consulta https://meta.discourse.org/t/17247 para obtener detalles.
expose:
  - "80:80"   # http
 #- "443:443" # https

Después de realizar los cambios, compilé Discourse y verifiqué la configuración, pero nginx sigue solicitando una clave SSL con el siguiente error:

[emerg] 7416#7416: no se puede cargar el certificado "/shared/ssl/discourse.xxxxxxx.com.cer": PEM_read_bio_X509_AUX() falló (SSL: error:0480006C:PEM routines::no start line:Expecting: TRUSTED CERTIFICATE)

¿Hay alguna forma de evitar que nginx intente cargar la clave o de hacer que nginx funcione correctamente a través de HTTP?

El error ocurre porque Nginx todavía está buscando un certificado SSL, pero tu ALB está manejando el SSL. Aquí te explicamos cómo solucionarlo:

  1. Revisa tu app.yml: Parece que ya has deshabilitado las plantillas SSL, así que puedes omitir esto.

  2. Reconstruye Discourse: Ejecuta ./launcher rebuild app para aplicar los cambios.

  3. Revisa la configuración de Nginx: Dentro del contenedor, mira la configuración de Nginx y asegúrate de que no haya líneas SSL (ssl_certificate, ssl_certificate_key). Si encuentras alguna, elimínala y reinicia Nginx con sv restart nginx.

  4. Verifica la configuración de tu ALB: Asegúrate de que tu ALB esté terminando SSL en el puerto 443 y reenviando HTTP (puerto 80) a tu EC2.

¡Eso debería evitar que Nginx busque el certificado SSL, y todo debería funcionar bien a través de HTTP!

Gracias. Resolví el problema basándome en el contenido relacionado y otros comentarios.