Aqui está uma atualização.
Adicionar isto à seção run na parte inferior do seu app.yml resolverá o problema de fazer com que /usr/local/bin/letsencrypt solicite certificados para DISCOURSE_HOSTNAME e www.DISCOURSE_HOSTNAME.
- exec: sed -i "s|-d \\${DISCOURSE_HOSTNAME}|-d \\${DISCOURSE_HOSTNAME} -d www.\\${DISCOURSE_HOSTNAME}|g" /usr/local/bin/letsencrypt
Isto (de alguma forma?) costumava ser suficiente, mas agora, quando o pedido chega para http://www.HOSTNAME/.well-known…, ele é redirecionado para o site não-www em vez de enviar o desafio que deveria enviar. Eu tentei fazer algo como isto:
server {
listen 80;
listen [::]:80;
server_name nzarchitecture.net.nz www.nzarchitecture.net.nz;
# Serve o desafio ACME (Let's Encrypt)
location ^~ /.well-known/acme-challenge/ {
root /var/www/discourse/public; # Certifique-se de que isto corresponda à sua webroot do Let's Encrypt
allow all;
}
# Redireciona todo o resto para HTTPS
location / {
return 301 https://$host$request_uri;
}
}
mas não descobri completamente.
Se alguém da equipe estiver ouvindo, seria bom se houvesse um hook do letsencrypt para que isso pudesse ser chamado em um after_letsencrypt. Antes de fazer essas alterações em after_ssl funcionava, mas parece que agora, se fizermos isso, ele é executado após o ssl, mas antes do letsencrypt.