호스트에서 VM의 Discourse 서버에 접속할 수 없음

안녕하세요! 해당 가이드를 따라 Ubuntu 18.04 가상 머신(VMware Workstation 15 Player 사용)에 Discourse를 성공적으로 설치했습니다. VM 내부에서 http://localhost:3000/에 접근하는 것은 문제없지만, Windows 10 호스트 시스템에서는 접속할 수 없습니다. VM 네트워크는 브리지드(bridged) 모드로 설정되어 있으며, rails 서버를 실행하기 위해 다음 명령을 사용했습니다:

bundle exec rails server --binding=0.0.0.0

하지만 호스트 머신에서 http://192.168.0.172:3000/로 접속하면 연결 거부(connection refused) 오류가 발생합니다. VM 내부에서 간단한 Python HTTP 서버를 설정해 보았습니다:

python3 -m http.server 3000

이것은 호스트 머신에서 정상적으로 접속할 수 있으므로, 이 문제가 Discourse에만 특이한 것 같다고 생각합니다. 제가 놓치고 있는 부분이 있을까요?

미리 감사합니다!

@Hugo_Lol 님, 안녕하세요.

호스트와 가상 머신 간의 포트 포워딩 설정 방법을 참고하시면 도움이 될 수 있습니다. 예를 들어:

https://www.howtogeek.com/122641/how-to-forward-ports-to-a-virtual-machine-and-use-it-as-a-server/

또 다른 예시:

이 예시들을 참고하여 문제를 해결하는 데 착수하는 데 도움이 될까요?

도움이 되시길 바랍니다.

안녕하세요 @neounix, 답변 주셔서 감사합니다. VM 네트워크를 이미 브리지 모드로 설정해 두었고, 같은 포트(3000)와 주소(0.0.0.0)로 리스닝하는 간단한 Python HTTP 서버를 통해 외부에서 접근할 수 있습니다. 그런데 왜인지 Discourse 서버에서는 작동하지 않네요… :thinking:

어떤 아이디어라도 있을까요?

Hugo_Lol님,

반갑습니다.

저는 Windows를 사용하지 않아서 더 이상의 도움을 드리기 어렵습니다. 죄송합니다!

제가 드릴 수 있는 최고의 제안은 /var/log에 있는 다양한 Discourse 로그 파일에서 단서를 찾아보시는 것입니다.

여기서 문제는 --binding 옵션이 완전히 무시된다는 것입니다. 로컬에서 해당 명령어를 실행해 보니 출력 결과에 이 줄이 있었습니다(출력 내용이 매우 방대해서 이 줄을 놓치기 쉽습니다):

I, [2020-06-08T17:26:55.938086 #21001]  INFO -- : listening on addr=127.0.0.1:3000 fd=15

config/unicorn.conf.rb 파일을 살펴보면, 서버가 0.0.0.0을 수신하도록 하려면 UNICORN_BIND_ALL=1 환경 변수를 설정해야 합니다. 따라서 이렇게 하면 작동해야 합니다: UNICORN_BIND_ALL=1 bundle exec rails server.

대신 bin/unicorn 스크립트를 사용할 수도 있으며, 이 스크립트는 0.0.0.0에 바인딩하는 데 사용할 수 있는 --host 옵션을 지원합니다.

정말 잘 해결되었습니다! 이제 작동합니다. 두 분 모두 정말 감사합니다. :clap:

감사합니다, 덕분에 고생 좀 덜었습니다.
공식 사용 가이드에 이 내용을 포함시켜 주실 수 있을까요? bundle exec rails server -b 0.0.0.0를 사용하는 작동하지 않는 솔루션 대신 말입니다.
인터넷 여기저기서 이 방법을 봤는데, 작동하지 않을 거라고는 상상도 못 했거든요.

물론이죠, 직접 하셔도 됩니다! 위키니까요 :+1:t3:

형, 고마워! 나도 같은 문제가 있었는데 이 방법으로 해결했어!