force-https가 비활성화된 사이트에서 DiscourseID를 활성화할 수 없습니다

참고로, 저는 같은 네트워크(서브넷은 다름)의 다른 서버에서 Nginx(npmplus) 뒤에 Proxmox 컨테이너로 Discourse 테스트 사이트를 구동 중입니다. 특별한 설정은 아닙니다. force-https를 활성화해 보았지만 CSRF 검증 오류가 계속 발생해서 더 이상 싸울 가치가 없어 다시 비활성화했습니다. 어쨌든 Nginx/Cloudflare가 모두 올바르게 설정되어 있어 사이트는 https로 정상 작동합니다:

방금 사이트에서 DiscourseID를 활성화해 보았지만 오류가 발생했습니다:


npmplus와 몇 시간 동안 씨름하여 Discourse CSRF 검증이 아무것도 불평하지 않도록 만드는 과정 없이 해결할 수 있는 우회 방법이 있을까요? 이 스레드는 npmplus나 SSL 디버깅을 위한 것이 아니라, 단순히 Discourse ID 문제를 해결하기 위한 것입니다.

Discourse ID에서 반환된 오류 메시지는 사이트의 리다이렉트 URI가 https여야 한다고 경고합니다. 따라서 force_https를 활성화하거나, 프록시 구성을 통해 요청이 https로 들어오고 있음을 명시해야 합니다.

https로 작동하지 않는 모든 것을 제외하고는:

음, 그걸 전혀 눈치채지 못한 것 같네요. 말씀드렸듯이 force_https를 활성화하려고 시도했지만, 아무 작업을 해도 계속 CSRF 오류가 발생했습니다. 아마도 바로 위에 명시된 지침에 따라 npmplus에서는 일반적인 nginx 변수가 작동하지 않는 것 같습니다. 제가 사용하던 설정은 다음과 같습니다:

그리고 제 컨테이너(CT)의 443 포트가 응답하지 않아, 여전히 로컬에서 80 포트를 통해 연결되고 있습니다.

리버스 프록시 설정을 수정하고 올바른 HTTPS를 작동하도록 해야 합니다.

지금 문제는 npmplus가 노출하는 변수들의 이상한 동작 때문인 것 같습니다. 전에 정상적으로 동작하던 설정이 있었는데 잃어버렸고, 현재로서는 뭘 해야 할지 잘 모르겠습니다. 일단 아래 설정으로 결정했지만, BAD CSRF 오류와 다시 레일스 콘솔을 통해 수정해야 하는 상황을 피하기 위해 100% 확실해질 때까지 해당 설정을 활성화하지 않으려 합니다.



흥미롭게도 현재 프록시가 80으로 설정되어 있음에도 불구하고 443 포트를 통한 트래픽만 거부하는 것 같습니다. 이는 정상적인 동작이 아닌 것 같습니다.

이 포인터를 참조할 수 없습니다. 말씀하시는 것이 Discourse 컨테이너인가요?

force_https는 Discourse가 443 포트(HTTPS)로 서빙하는지 여부에 영향을 주지 않습니다. 이는 단지 Discourse가 항상 https를 통해 액세스되고 있다고 가정해야 한다고 알려주는 것입니다.

이 문제로 인해 어려움을 겪고 있지만 명확한 답을 찾지 못한 다른 분들을 위해 다시 이곳에 올립니다. 제가 겪었던 문제는 app.yml 파일에서 cloudflare.template.yml 파일을 사용하지 않고 있었기 때문이었습니다. :sob:

옵션을 활성화한 후 다시 빌드하니 정상적으로 작동합니다.