업데이트 사항을 공유합니다.
app.yml 하단의 run 섹션에 아래 내용을 추가하면 /usr/local/bin/letsencrypt가 DISCOURSE_HOSTNAME과 www.DISCOURSE_HOSTNAME에 대한 인증서를 요청하는 문제를 해결할 수 있습니다.
- exec: sed -i "s|-d \${DISCOURSE_HOSTNAME}|-d \${DISCOURSE_HOSTNAME} -d www.\${DISCOURSE_HOSTNAME}|g" /usr/local/bin/letsencrypt
이전에는 이 정도면 충분했지만(어떤 식으로든?), 이제는 http://www.HOSTNAME/.well-known…에 대한 요청이 들어오면 챌린지를 보내는 대신 non-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;
}
}
아직 완전히 해결하지는 못했습니다.
팀에서 이 내용을 보고 계신 분이라면, after_letsencrypt에서 이 작업을 호출할 수 있도록 letsencrypt 훅이 있으면 좋겠습니다. 이러한 변경 사항을 하기 전에는 after_ssl에서 작동했지만, 이제는 그렇게 하면 ssl 이후에 실행되지만 letsencrypt 이전에는 실행되지 않는 것 같습니다.