OAuth2와 Let's Encrypt 충돌

Ubuntu에서 DO 템플릿을 기반으로 생성된 Discourse Docker 컨테이너를 실행 중이며, “Custom OAuth2”가 활성화되어 있습니다. 대부분은 잘 작동하지만, Let’s Encrypt 인증서 업데이트가 실패합니다.

문제를 추적해 보니 로그에서 업데이트 스크립트가 Cron에 의해 실행되고 있지만, Discourse가 챌린지 콜백을 OAuth2 IDP로 리다이렉트하기 때문에 챌린지가 거부되는 것을 확인할 수 있습니다.

다음은 (개인정보를 삭제한) 로그입니다:
[Wed Jan 28 12:40:32 PM UTC 2026] Renewing: ‘community.site’
[Wed Jan 28 12:40:32 PM UTC 2026] Renewing using Le_API=https://acme-v02.api.letsencrypt.org/directory
[Wed Jan 28 12:40:33 PM UTC 2026] Using CA: https://acme-v02.api.letsencrypt.org/directory
[Wed Jan 28 12:40:33 PM UTC 2026] Single domain=‘community.site’
[Wed Jan 28 12:40:35 PM UTC 2026] Getting webroot for domain=‘community.site’
[Wed Jan 28 12:40:35 PM UTC 2026] Verifying: community.site
[Wed Jan 28 12:40:36 PM UTC 2026] Pending. The CA is processing your order, please wait. (1/30)
[Wed Jan 28 12:40:40 PM UTC 2026] community.site: Invalid status. Verification error details: 1.2.3.4: Invalid response from https://oauth.site/authorize?client_id=xxx
[Wed Jan 28 12:40:40 PM UTC 2026] Please check log file for more details: /shared/letsencrypt/acme.sh.log
[Wed Jan 28 12:40:40 PM UTC 2026] Error renewing community.site.

앱을 재빌드하면 다음 3개월 동안 문제가 해결되지만, 근본적으로 해결하고 싶습니다. 조언이 있을까요?

미리 감사드립니다.

여기서 뭔가 명백한 문제를 보는 건 아닌데, 솔직히 그냥 설정을 리버스 프록시 뒤에 두고 거기서 SSL을 종단한 다음 DNS 검증으로 바꾸는 걸 추천합니다. (이건 임시 조치일 뿐, 문제의 원인이 불분명하므로 근본적인 해결책은 아닙니다.)

해당 문제에 대한 추가 정보:
http://community.site/.well-known/…로 들어오는 acme-challenge 요청을 확인할 수 있습니다.
이 요청은 https://community.site/로 리다이렉트되고, 이후 /oauth_basic으로 다시 리다이렉트됩니다. 두 번째 리다이렉트는 정상적인 동작이지만, 첫 번째 리다이렉트는 예상되지 않는 동작입니다.

들어오는 챌린지 요청은 access.log에 표시되지만, access.letsencypt.log는 비어 있습니다.

/etc/nginx/conf.d/outlets/before-server/20-redirect-http-to-https.conf 파일을 찾았는데, 80 포트로 들어오는 모든 요청에 대해 항상 301 https://community.site를 반환하는 것 같습니다.

해당 문제는 지난 8월에 수정되었습니다. letsencrypt updates: renew location for .well-known, add support for … · discourse/discourse_docker@ae4887a · GitHub

흥미롭네요. 11월 26일에 앱을 다시 빌드했기 때문에 그때까지 수정이 포함되어 있을 거라고 예상했거든요…

어쨌든 도움 주셔서 모두 감사합니다. 이 주제를 닫고, 다음 재빌드 이후에 문제가 다시 발생하지 않기를 바랍니다.

아, 상황이 더 복잡했군요. 이곳에서 해당 토픽의 끝까지 읽어보시면 12월 22일에 또 다른 수정이 있었다는 것을 확인하실 수 있습니다. 그래서 그 문제를 겪으신 것이었군요.

커밋을 확인해 보았고, 설치해 두었습니다. 하지만 여기 오류가 있는 것 같습니다.

return 301 https://${DISCOURSE_HOSTNAME}$request_uri;

return 301 https://${DISCOURSE_HOSTNAME}\$request_uri;
이어야 합니다.

틀렸다면 정정해 주세요.

제가 언급한 다른 수정 사항이 정확히 이 문제를 해결합니다.

다시 한번 감사합니다. 정말 도움이 많이 되었습니다!