동일 호스트 IP의 도메인 이름에서 OneBox가 작동하지 않음

안녕하세요,

버그가 발생하고 있습니다. 솔직히 말씀드리면, docker 문제라고 생각하지만, Docker를 Discourse에만 사용하고 있어서 일단 여기서 질문을 올려봅니다. 다른 분들도 관심이 있을 것 같아서요.

최근까지 제 Discourse 설치 환경(https://forum.domainname.com/)은 제 웹사이트(https://www.domainname.com/)와 동일한 서버에 Nginx를 리버스 프록시로 사용하여 운영되고 있었습니다.
이후 Discourse 설치 환경을 동일한 구성(Nginx 리버스 프록시)으로 새 서버로 이전했습니다. 모든 것이 정상적으로 작동하다가, 웹사이트를 새 서버로 옮긴 이후부터 문제가 발생했습니다.

몇몇 사용자가 Onebox 기능이 더 이상 작동하지 않는다고 알려주었습니다. 조사해보니 제 도메인 이름에 대해서만 작동하지 않는다는 것을 알게 되었습니다.
그래서 Docker 컨테이너에 진입하여 테스트해 본 결과, Docker 컨테이너 내부에서 제 웹사이트에 연결할 수 없었습니다. 다른 외부 IP로는 모두 연결이 가능했지만, 제 서버의 외부 IP나 localhost에는 연결할 수 없었습니다.
솔직히 왜 그런지 이해가 가지 않습니다. 구성은 이전 서버와 정확히 동일하기 때문입니다.

감사합니다

이 문제는 이미 오래전부터 지속되어 왔습니다. 제가 Discourse를 별도의 VPS로 옮긴 주된 이유이기도 합니다.

하지만 이 문제가 해결되면 매달 약 40유로를 절약할 수 있으니, 해결될 수 있다면 좋겠습니다.

솔직히 이전에는 이런 문제가 없었어요. 웹사이트와 디스커스(Discourse) 설치 환경을 항상 같은 서버에 두고 있었거든요.

제 추측은 DNS 문제입니다.

/etc/hosts 파일에 호스트명이 127.0.0.1 주소로 지정되어 있나요?

그렇다면 로컬 호스트 IP를 제거해야 합니다. 컨테이너에서는 해당 주소로 연결할 수 없기 때문입니다. (또한 컨테이너의 hosts 파일에 외부 호스트 IP를 포함할 수도 있습니다.)

Docker 컨테이너가 올바른 도메인 이름의 IP 주소를 찾으므로 DNS 문제가 아닙니다. Discourse 컨테이너에서 curl을 실행하면 443 포트로 연결할 수 없어 요청이 타임아웃됩니다.

네, 결국 작동하게 만들었습니다.

관심 있는 분들을 위해 공유합니다 (예: @Jagster)

리눅스에서 방화벽을 사용 중이라면 (저는 arno-iptables-firewall을 사용 중입니다)

  • ifconfig 명령으로 네트워크 장치를 나열합니다. 기본적으로 Docker는 docker0이라는 네트워크 장치를 생성합니다.
  • 방화벽 설정 파일을 열고 TRUSTED_IF 섹션에 docker0을 추가합니다.
  • 방화벽을 재시작한 후 Docker를 재시작합니다.