Aquí tienes una actualización.
Añadir esto a la sección run al final de tu app.yml resolverá el problema de conseguir que /usr/local/bin/letsencrypt solicite certificados para DISCOURSE_HOSTNAME y www.DISCOURSE_HOSTNAME.
- exec: sed -i "s|-d \\${DISCOURSE_HOSTNAME}|-d \\${DISCOURSE_HOSTNAME} -d www.\\${DISCOURSE_HOSTNAME}|g" /usr/local/bin/letsencrypt
Esto (de alguna manera) solía ser suficiente, pero ahora cuando llega la solicitud para http://www.HOSTNAME/.well-known… se redirige al sitio no www en lugar de enviar el desafío que se supone que debe enviar. Intenté hacer algo como esto:
server {
listen 80;
listen [::]:80;
server_name nzarchitecture.net.nz www.nzarchitecture.net.nz;
# Servir el desafío ACME (Let's Encrypt)
location ^~ /.well-known/acme-challenge/ {
root /var/www/discourse/public; # Asegúrate de que esto coincida con tu webroot de Let's Encrypt
allow all;
}
# Redirigir todo lo demás a HTTPS
location / {
return 301 https://$host$request_uri;
}
}
pero no lo resolví del todo.
Si alguien del equipo está escuchando, sería bueno que hubiera un hook de letsencrypt para que esto pudiera llamarse en un after_letsencrypt. Antes de hacer estos cambios en after_ssl funcionaba, pero parece que ahora si hacemos eso, esto se ejecuta después de ssl, pero antes de letsencrypt.