Docker 설치, Cloudflare 프록시와 호환되지 않음

Amazon EC2 인스턴스를 구성하여 Discourse를 호스팅했고, 모든 것이 잘 진행되는 것 같았습니다. 하지만 설치 스크립트에 모든 정보를 입력하고 실행한 후, Discourse Docker 이미지가 포트 80에서 작동해야 하는데 그렇게 되지 않습니다.

그런 일이 일어나지 않습니다.

왜 그런지 전혀 모르겠습니다. 진단할 수 있었던 한 가지는, Docker 컨테이너를 중지했다가 다시 시작하면 EC2 인스턴스의 IP 주소로 접속했을 때 기본 nginx 서버 화면이 표시된다는 것입니다. 하지만 몇 초 후에도 그 화면이 사라집니다.

권장대로 Docker 설치를 사용했습니다.

도메인 이름으로 접속하면 아무 반응이 없고, IP 주소로 접속해도 마찬가지입니다.

포트 80에서 실행 중입니다.

위에서 언급했듯이 Docker 컨테이너를 중지했다가 다시 시작하면, 기본 Nginx “It’s working” 웹페이지를 볼 수 있습니다. 하지만 몇 초 후에 다시 작동하지 않는 상태로 돌아갑니다.

여기서 무슨 일이 일어나고 있는 건가요? 정말 답답합니다.

이것에 대한 오류 로그는 어떻게 확인하나요?

어떤 배포판(Distro)을 사용 중이신가요? 표준 Ubuntu 서버에는 nginx가 기본적으로 포함되어 있지 않으므로, 수동으로 설치하지 않았다면 이 페이지를 볼 일이 없어야 합니다.

호스트에 nginx가 실행 중이라면 설치 과정에 간섭을 일으켜 제대로 작동하지 않을 수 있습니다.

라파엘, 답변해 주셔서 감사합니다.

사실 제 /etc/hosts 파일을 수정해서 문제를 우회한 것 같습니다. 실제 문제는 인스톨러가 제가 사용하는 호스트네임으로 포트 443과 포트 80에 접근할 수 없다고 표시했던 것이었거든요.

결국 저는 설치를 삭제하고 처음부터 다시 시작하기로 결정했는데, 다시 같은 문제가 발생하고 있습니다. 그래서 위에서 말씀드린 내용은 모두 잊고 처음부터 다시 시작해 보겠습니다.

포트 443과 80에 접근할 수 없는 이유가 무엇일까요?

EC2 보안 그룹을 모든 수신 HTTP 및 HTTPS 트래픽을 허용하도록 설정해 두었기 때문에 다소 혼란스럽습니다.

표준 설치 방식은 시스템에 설치된 nginx를 사용하지 않습니다. 호스트에 nginx가 설치되어 있으면 Discourse가 포트 80과 443에 접근할 수 없습니다. 시스템에 nginx를 설치함으로써 Discourse가 표준 구성으로 작동하지 못하도록 막은 것입니다.

이것은 Amazon과는 전혀 무관합니다. 그저 리눅스 시스템 관리의 문제일 뿐입니다.

(Setting up offline page 에서 설명하듯 시스템에 nginx를 설치하는 것이 적절한 경우도 있지만, 이는 리눅스에서 포트가 어떻게 작동하는지를 이해해야 합니다. :smiling_face: 따라서 현재 상황이 이해되지 않는다면 이 부분부터 시작하지 마세요!)

말했듯이, 그건 무시해.

해결했어.

결국 Cloudflare가 discourse 서브도메인을 프록시하도록 허용하면 안 돼. 서브도메인 A 레코드에서 오렌지 클라우드를 클릭해서 회색(DNS only)으로 바꿔야 해. 그러면 discourse 설치 환경에서 필요한 포트에 접근하는 데 문제가 없을 거야.

고마워!