アップデートです。
app.yml の一番下にある run セクションにこれを追加すると、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のWebルートと一致していることを確認してください
allow all;
}
# その他すべてをHTTPSにリダイレクト
location / {
return 301 https://$host$request_uri;
}
}
しかし、うまくいきませんでした。
チームの誰かが聞いていたら、letsencryptフックがあれば、これを after_letsencrypt で呼び出すことができると良いのですが。これらの変更を after_ssl で行うと以前は機能していましたが、現在はSSLの後、letsencryptの前に実行されるようです。