Вот обновление.
Добавление этого в секцию run в нижней части вашего файла app.yml решит проблему с запросом сертификатов для DISCOURSE_HOSTNAME и www.DISCOURSE_HOSTNAME через /usr/local/bin/letsencrypt.
- exec: sed -i "s|-d \${DISCOURSE_HOSTNAME}|-d \${DISCOURSE_HOSTNAME} -d www.\${DISCOURSE_HOSTNAME}|g" /usr/local/bin/letsencrypt
Раньше этого (как-то?) хватало, но теперь, когда поступает запрос на http://www.HOSTNAME/.well-known…, он перенаправляется на сайт без www, вместо отправки необходимого вызова. Я пытался сделать что-то вроде этого:
server {
listen 80;
listen [::]:80;
server_name nzarchitecture.net.nz www.nzarchitecture.net.nz;
# Обслуживание вызова ACME (Let's Encrypt)
location ^~ /.well-known/acme-challenge/ {
root /var/www/discourse/public; # Убедитесь, что это совпадает с корневым каталогом Let's Encrypt
allow all;
}
# Перенаправление всего остального на HTTPS
location / {
return 301 https://$host$request_uri;
}
}
но так и не смог разобраться до конца.
Если кто-то из команды это читает, было бы здорово, если бы существовал хук letsencrypt, чтобы его можно было вызывать в after_letsencrypt. До внесения этих изменений в after_ssl всё работало, но теперь, если мы делаем так, это выполняется после SSL, но до letsencrypt.