Une erreur se produit lors de la construction de Discourse via HTTP

  1. Configuration du domaine terminée
  2. Instance AWS EC2 créée
  3. Certificat émis à l’aide d’ACM
  4. 443 configuré et certificat connecté via ALB
  5. ALB achemine le trafic du domaine vers l’instance EC2 sur le port 80

Avant de construire Discourse, j’ai modifié le fichier app.yml pour configurer les connexions HTTP :

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Décommentez la ligne suivante pour activer l'écoute IPv6
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
  #- "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"

## quels ports TCP/IP ce conteneur doit-il exposer ?
## Si vous souhaitez que Discourse partage un port avec un autre serveur web comme Apache ou nginx,
## voir https://meta.discourse.org/t/17247 pour plus de détails
expose:
  - "80:80"   # http
 #- "443:443" # https

Après avoir effectué les modifications, j’ai construit Discourse et vérifié la configuration, mais nginx continue de demander une clé SSL avec l’erreur suivante :

[emerg] 7416#7416: impossible de charger le certificat "/shared/ssl/discourse.xxxxxxx.com.cer": PEM_read_bio_X509_AUX() a échoué (SSL: error:0480006C:PEM routines::no start line:Expecting: TRUSTED CERTIFICATE)

Existe-t-il un moyen d’empêcher nginx de tenter de charger la clé ou de faire fonctionner nginx correctement sur HTTP ?

L’erreur se produit car Nginx recherche toujours un certificat SSL, mais votre ALB gère le SSL. Voici comment résoudre le problème :

  1. Vérifiez votre app.yml : Il semble que vous ayez déjà désactivé les modèles SSL, vous pouvez donc ignorer cette étape.

  2. Reconstruisez Discourse : Exécutez ./launcher rebuild app pour appliquer les modifications.

  3. Vérifiez les paramètres Nginx : À l’intérieur du conteneur, examinez la configuration Nginx et assurez-vous qu’il n’y a pas de lignes SSL (ssl_certificate, ssl_certificate_key). Si vous en trouvez, supprimez-les et redémarrez Nginx avec sv restart nginx.

  4. Vérifiez la configuration de votre ALB : Assurez-vous que votre ALB termine le SSL sur le port 443 et transfère le trafic HTTP (port 80) vers votre EC2.

Cela devrait empêcher Nginx de rechercher le certificat SSL, et tout devrait fonctionner correctement sur HTTP !

Merci. J’ai résolu le problème en me basant sur le contenu connexe et d’autres commentaires.