서버가 포트 80을 경청하되 링크는 https로 제공되도록 구현해야 합니다. 이 문제를 어떻게 해결할 수 있을까요?
현재 제 설정은 다음과 같이 작동하며 모든 링크가 http입니다:
expose:
# - “443:443” # https
- “80:80” # https
443으로 이름을 변경하려고 시도했지만 실패했습니다.
서버가 포트 80을 경청하되 링크는 https로 제공되도록 구현해야 합니다. 이 문제를 어떻게 해결할 수 있을까요?
현재 제 설정은 다음과 같이 작동하며 모든 링크가 http입니다:
expose:
# - “443:443” # https
- “80:80” # https
443으로 이름을 변경하려고 시도했지만 실패했습니다.
그것은 가능하지 않을 것 같습니다.
Let’s Encrypt는 상당히 엄격하여 보안상의 이유로 443 포트 이외의 포트에 대한 SSL 인증서를 제공하지 않을 것으로 생각됩니다.
force https 사이트 설정을 켜 보시는 건 어떨까요?
이렇게 해야 하는 이유를 설명해 주시겠어요?
내부 서버에 Discourse가 설치되어 있으며 80 포트에서 리스닝을 열고 있습니다. 방문자가 사이트를 요청하면 항상 HTTPS로 열리지만(리다이렉트), 모든 링크는 HTTP로 되어 있습니다. 이 인프라를 직접 제어할 수 없으며, 80 포트 외에 다른 해결책이 없습니다.
저는 실제로 https를 사용하지 않기 때문에 제 경우엔 이게 작동하지 않을 것 같습니다.
끄를 수는 있지만, SSL 때문에 포트 80에서 HTTPS를 활성화하는 것이 불가능하므로 이 문제가 해결되지 않을 것 같습니다.
Discourse는 표준 포트 이외의 포트에서 실행하는 것을 지원하지 않습니다.
이는 80 포트에서 https를 실행하는 경우를 포함합니다.
Discourse를 포함한 모든 사이트의 SSL을 처리하는 리버스 프록시 구성이 다른 곳에 있다는 뜻인가요?
직접 시도해 보셨나요?
그럼 정확히 무엇을 하려고 하시나요?
그 말은 즉, 서빙되는 페이지에 포함된 링크는 https로 표시되길 원하시지만, https 처리는 다른 방식으로 하고 있다는 뜻인가요?
죄송합니다만, 님의 게시물을 (완전히) 이해하지 못하고 있습니다.
다음과 같이 말씀하셨죠,
80 포트에서 리스닝을 하되, 링크는 https로 제공하도록 서버를 구현해야 합니다. 이 문제를 어떻게 해결할 수 있을까요?
직접적으로 이해하자면, 80 포트의 모든 HTTP 트래픽을 443 포트의 HTTPS로 리다이렉트하되, 80 포트에서 HTTPS 트래픽을 보내는 것은 원하지 않고 80 포트를 443 포트만으로 리다이렉트하는 것을 원하시는 것으로 보입니다.
그렇다면 대부분의 웹 서버가 그렇게 설정되어 있습니다. 예를 들어 Apache2나 nginx를 사용하여 443 포트 트래픽을 설정하는 데 LetsEncrypt를 사용하면, LetsEncrypt가 이 리다이렉트를 설정할 것인지 물어보고 선택해 주시면 자동으로 설정해 줍니다.
@Falco 님이 물으셨듯이, 정확한 설정은 무엇인가요? Discourse 앞에서 nginx나 Apache2 같은 웹 서버를 리버스 프록시로 실행하고 계신 건가요?
그렇다면 nginx나 Apache2에서 LetsEncrypt를 설정할 때, LetsEncrypt 설정 소프트웨어가 (설정 대화상자가 물어볼 때 "예"를 선택하면) "모든 HTTP를 HTTPS로 리다이렉트"하도록 설정해 줍니다.
음, 내 Discourse 출력 스트림은 항상 80번 포트예요. 다른 포트를 사용할 수 없고, Let’s Encrypt에 대한 설정도 없어요.
@anton21m 님 안녕하세요
네, 이제 더 명확하게 이해했습니다. 컨테이너 앞에 리버스 프록시가 있는 것이군요.
사용 중인 리버스 프록시는 무엇인가요? nginx인가요, Apache2인가요?
서버: nginx/1.14.1
하지만 해당 서버에 접근 권한이 없습니다.
https://forum.qpay.uz/
모든 링크가 http 프로토콜을 사용한다는 점을 확인하실 수 있습니다.
@anton21m 님, 정말 깔끔하고 잘 생긴 새로운 디스커스 사이트네요.
이제 여러분의 상황을 모두 완전히 이해했습니다. 감사합니다.
만약 nginx 또는 system에 접근할 수 없다면, 시스템 관리자에게 LetsEncrypt를 설치하고 사이트에 SSL을 추가해 달라고 요청해야 합니다.
해당 호스팅 제공업체를 계속 사용하면서 nginx에 접근 권한이 없는 경우, 이것이 정말로 유일한 방법입니다.
불편한 소식을 전해 죄송합니다. 다른 호스팅 제공업체를 고려해 보시는 것은 어떨까요?
말씀하신 그 '원하는 해결책’은 우리가 이미 조언해 드린 내용과 정확히 일치합니다. 예를 들어, 웹 서버를 설정하여 80 포트의 트래픽을 443 포트로 리디렉션하는 것이죠.
그리고 이 해결책 역시 웹 서버를 수정해야 하므로, 지금까지 받아오신 조언과 동일한 방식입니다.
따라서 @anton21m 님, 우리는 이제 원圈内을 돌고 있는 것 같습니다…
하지만 @anton21m 님을 위해 한 번 더 반복해 드리겠습니다.
성공하시길 바라기 때문입니다!
웹 서버에 접근 권한이 있어야 하며, 80 포트의 트래픽이 443 포트로 리디렉션되도록 설정하고, 같은 웹 서버에 SSL 인증서를 설정해야 합니다. 만약 호스팅 제공업체에서 이를 허용하지 않는다면, 다른 호스팅 제공업체로 이동을 고려해야 합니다.
Discourse가 권장하는 호스팅 제공업체 중 하나를 통해 호스팅을 고려해 보시기 바랍니다. 그들은 이 모든 과정을 쉽게 대신해 줄 것입니다.
도움이 되기를 바랍니다.
권장:
Discourse의 force_https 사이트 설정을 활성화하면 이를 달성할 수 있어야 합니다.