• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

nginx 접속 문제

20.02.21 15:18 작성 조회수 2.14k

1

우여곡절이 많았지만 그래도 남박사님 덕분에 전체 과정을 쭉 공부할 수 있었습니다.

우선 감사를 드립니다.

리눅스 우분투에서 배포하기 강좌 중

이상태를 유지하며 ifconfig로 

ip를 확인하고 접속을 시도하였는데 응답 오류가 나옵니다.

한가지 걸리는 것이 ..  웹서버에 배포하는 것말고 기존 실습 과정 중에도 0.0.0.0 으로는 접속이 안되어서 127.0.0.1로 사용하여 실습 과정에 참여했었습니다.   그런데 여기서는 test.py를 127.0.0.1로 바꾸고 실행 해도 접속이 되지 않아서 해결이 안되네요.

어떤식으로 해결해야 할지 질문드려요.  0.0.0.0.을 어딘가에서 사용중이기 때문에 발생하는걸까요 통신사 공유기를 사용중에 있습니다.

답변 8

·

답변을 작성해보세요.

1

우분투의 10.0.2.15 아이피를 외부 환경에서 접속하셨다고 하셨는데 그 외부환경이 어디인지요? 10.0.2.15 는 가상환경에서 생성된 사설망 아이피 주소 입니다. 따라서 가상환경과 가상환경이 구동중인 컴퓨터 외에서는 접속할 수 없는 아이피 입니다. 192.168.x.x, 172.16.x.x, 10.x.x.x 이렇게 시작하는 아이피들은 모두 사설망에서만 사용하는 아이피로 공유기 내부쪽에 접속한 환경끼리들만 접속가능하고 그 밖에서는 접속하실 수 없는 아이피며 가상환경을 어떤걸 쓰시는지 모르겠지만 리눅스 아이피를 보아하니 버추얼박스를 쓰시는게 아닌가 추측해봅니다만..

아마도 이 경우 해당 가상환경이 윈도우(버추얼박스가 구동중인) 에서는 192.168.x.x 로 설정되어있을테고 리눅스 내부에서는 10.0.2.15 로 잡혀있을텐데 가상환경 네트워크 설정관리에서 위의 192.168.x.x 를 10.0.2.15 환경으로 포트포워딩을 해주어야 합니다. 이 부분을 좀 더 명확하게 이해하시고 넘어가셔야 할것 같습니다.

10.0.2.15 는 리눅스의 아이피이고 192.168.0.x 아이피는 리눅스가 실행중인 가상환경의 아이피이고 최종적으로 이 모든 환경은 공유기에 물려있는 컴퓨터의 공인 아이피로 구동중일텐데 이를 연결해주는 작업이 필요합니다. 그래서 가상환경 프로그램 네트워크 설정에서 192.168.0.x 와 10.0.2.15 를 포트포워딩 해주는 작업이 필요하고 공유기 관리자에서는 192.168.0.x 를 포트포워딩 해주는 설정이 필요합니다. 그래야 완벽한 외부환경에서 해당 리눅스에 접근을 할 수 있게 됩니다. 그렇기 때문에 내 PC의 IP와 가상환경의 IP는 다를 수 밖에 없게 되고 10.0.2.15 라는 리눅스 외에는 아무도 알 수 없는 아이피 입니다. 추가로 다른 하드디스크 드라이브는 아무 상관없습니다.

사실 별거 아닌 문제로 보이는데 이게 헷갈리리가 쉬운 부분이기도 합니다. 어떻게든 이런 환경에 대해 이해가 필요한 부분이고 해결을 꼭 하고 넘어가시는게 좋을듯 합니다. 또 질문 주시기 바랍니다. ^^;

또 다른 방법으로는 가상환경 네트워크 설정에서 리눅스의 환경을 NAT 가 아닌 Bridge 방식으로 연결해보는것도 방법이 될 수 있습니다. 브리지 방식은 호스트 컴퓨터(윈도우)의 네트워크를 사용하지 않고 직접 공유기에서 가상환경쪽으로 아이피를 할당받게 됩니다.  구글에서 사용하시는 가상환경 프로그램 bridge 로 검색해보시면 좀 더 많은 정보들이 있습니다.

1

리눅스가 어떤 환경에서 구동중이신건가요? hyper-v, vmware ?

우선 ifconfig 를 실행하면 오류가 난다고 하셨는데 여기서부터 문제가 있는것 같습니다. 일단 리눅스에서 인터넷이 제대로 동작하는지 부터 확인해봐야 할 듯 합니다. 리눅스 브라우저에서 웹사이트 접속을 한번 해보시는게 좋을듯 합니다. 그리고 127.0.0.1 로 시작된 서버에는 로컬외에 외부에서는 접속이 불가능합니다. 리눅스를 가상환경에서 구동중이라면 해당 가상환경 프로그램의 네트워크 설정쪽을 확인해보셔야 할듯 합니다. 리눅스 네트워크 설정이 아니라 가상환경의 네트워크 설정입니다.

그리고 통신사 공유기를 제가 모두 알 수는 없으나 특정 통신사 공유기는 공유기처럼 생겼으나 허브처럼 동작하는 공유기도 있습니다. 이러점도 참고하셔야 할듯 하구요.. 어쨌든 정리하자면...

- 리눅스에서 문제없이 인터넷이 접속되는지 확인합니다.

- 리눅스가 가상환경에서 구동중이라면 가상환경의 네트워크 설정을 확인하여 해당 가상환경에 네트워크 드라이버가 정상적으로 설치되었는지 아니면 어떤 형태로 설정되었는지(NAT, 브리지 등)를 확인하여 설정을 변경해봅니다.(NAT 방식 추천)

- 다른 리눅스를 설치해보고 문제가 가상환경 프로그램에 있는지 리눅스에 있는지도 확인해봅니다.

- 가상환경 프로그램 사용중이라면 가상환경 프로그램을 다른걸로 변경해봅니다.(Hyper-V, VMware, VirtualBox)

0

해결하셨다니 제가 더 기쁩니다. ㅎㅎㅎ 

구글 클라우드 플랫폼에서 작업하는게 처음에는 복잡하고 어려워보이지만 막상 구동해보면 사실 로컬에서 환경 잡는것보다 훨씬 쉬운 부분들이 많습니다. ^^

사실 알고나면 별거 아닌데 모를때가 가장 답답하고 그때 포기하시는 분들이 정말 많이 계시는걸 알기에.. 어떤 막히는 구간만 넘어가면 재미있는 내용들이 많은게 개발일이라고 생각됩니다. 그런 구간들이 앞으로도 또 많이 나오겠지만 항상 포기하지 마시고 답을 찾으셨으면 좋겠고 저 또한 도움이 될 수 있으면 좋겠네요 그리고 좋은 강의평가 주시면 더더욱 힘이 납니다. ^^

0

reny koo님의 프로필

reny koo

질문자

2020.02.22

개발 익숙치 않다 보니 .. 오류 설명에서 조차 의사소통이 잘안되었음에도 불구하고 자세히 답변 주셔서 감사합니다. 
제가 말씀 드린 외부 환경은 가상환경을 구동중인 제 컴퓨터를 말씀 드린것 인데 외부라 표현을 하여 오해가 있었던 것 같습니다.

그래도 결론적으로 주신 답변을 통해 해결 하였습니다.  가상환경 네트워크를 브릿지 방식으로 바꾸고 ifconfig 를 통해 나온 enp0s3:  ip로 접속을 하니 해결 되었습니다.  이제 구글 클라우드 플랫폼을 통해 사이트오픈까지 달려보겠습니다.

좋은 강좌와 섬세한 답변까지 모두 감사합니다. 웹서비스를 만드는 중인데 이강좌가 아니었으면 여기까지 올수 있었을까 라는 생각이 듭니다. 강사님 덕분에 프로그램 개발에 더 흥미를 느낄수 있게 되었습니다. 감사합니다.

0

reny koo님의 프로필

reny koo

질문자

2020.02.22

외부에서 접속이 안되니 과정중에 나오는 레파지토리 사용등 정상적으로 따라가기가 어렵네요. 

위의 문제를 해결해야  할것 같은데요.  

정리해보면

-우분투 내 test.py 파일에 0.0.0.0:5000  설정. 우분투 내에서 test.py 실행 한 경우 0.0.0.0:5000 접속 정상 출력

-우분투 안에서 ifconfig 로 ip 확인 10.0.2.15

-uwsgi 실행 해서 대기 후 외부 환경에서 10.0.2.15:5000  접속 오류. 

오류는 워낙 다양하게 발생하니 해답을 구하는건 아니고 어떤  문제로 검색을 해보면 될지 알고 싶습니다.

공유기 설정 문제일수도 있을것 같구요. 혹시.. 용량 부족 때문에 가상환경을 부팅 디스크인 c:가아닌 다른 하드디스크 드라이브에 설치 했는데 설마 이 부분이 문제가 될수도 있을까요?  

그리고 현재 제 pc의  ip와 가상환경(우분투)의 ip가 다르게 나오는데 이게 맞는건지요? 

0

reny koo님의 프로필

reny koo

질문자

2020.02.22

네 0.0.0.0으로 접속한게 아니라 위에 말씀드린대로 IFCONFIG를 통해 확인한 리눅스 아이피 10.0.2.15:5000로 접속을 시도하는데 접속 오류가 발생합니다.

윈도우 7이라 하이퍼V는 못써보고 VMWARE랑 버추어박스 두환경에서 같은 오류가 발생 합니다. 

구글링도 해보고 가상환경 재설치후 우분투 버전 변경등 해보았으나 해결이 되지 않아 우선 그 부분을 건너뛰고 

다른방법으로 가상환경에 파이썬게시판 파일을 옮긴뒤에 도커만들고 구글 클라우드 플랫폼에서구동하는 걸로 시도를 해보겠습니다.

 

0

app.run(host="0.0.0.0") 는 서버를 전체 아이피로 오픈하겠다는 의미이고 접속을 하실때는 0.0.0.0 으로 접속을 하는게 아니라 해당 컴퓨터의 아이피로 접속을 하셔야 합니다. 예를 들어 리눅스에서 0.0.0.0:5000 으로 플라스크가 구동중인 상태고 다른 환경에서 접속을 할때는 해당 리눅스의 아이피로 접속을 해야합니다. http://0.0.0.0:5000 로 접속하는게 아닙니다. 만약 127.0.0.1 로 서버를 구동하면 가상환경 리눅스 내에서만 접속이 가능하고 가상환경 밖에서는 접속이 불가능해집니다. 127.0.0.1 == localhost 같은 의미로 사용되는데 나 스스로를 가르키는 아이피입니다. 가상환경이라면 리눅스에서의 127.0.0.1 과 가상환경 밖에서의 127.0.0.1 은 다른 의미로 보시면 됩니다.

이 문제가 맞는지 모르겠습니다. ^^;;

0

reny koo님의 프로필

reny koo

질문자

2020.02.21

아 죄송합니다 . 제가 분명하게 말씀을 못드려서 오해가 생긴것 같습니다. ifconfig 정상 작동 하고.  ifconfig에서 확인한 ip로 접속을 한 경우 접속 오류가 생긴다는 의미 였습니다. 리눅스 파이어 폭스 실행해보니 인터넷은 정상적으로 접속이 됩니다.

네트워크는 nat로 설정되었고요. 

우분투 버전도 변경해보았고  가상환경 프로그램도 변경해보았습니다. 그러다 문득 생각이 난게 위에 말씀 드린것 처럼 이같은 문제를 가상환경에서만 겪고 있는 문제가 아니라 
기존 윈도우 환경에서도 0.0.0.0 으로는 접속이 안되어 127.0.0.1로 변경해서 실습을 했었습니다. 

그것과 같은 문제가 발생하는게 아닐까 싶은데요 
0.0.0.0 말고 다른ip로 변경을 해서 접속을 한다던가 하는 방법은 없을까요? 

꼭 0.0.0.0을 사용해야 한다면 이걸 초기화 하거나 정상연결이 되는지 체크를 해보는 방법?이 혹시 있을까요

답변 감사드립니다.

리눅스 환경에서 test.py를 실행하여 0.0.0.0:5000 으로의 접속은 잘 됩니다.