포트폴리오를 작성하다가 부스트캠프에서 진행한 부커톤때 배포했던 사이트의 맨 뒤에 3000번 포트가 눈에 확 띄었습니다.

이걸 어떻게 하지.. 하다가 이왕 이렇게 된거 NginX 공부도 할 겸 직접 고쳐볼까 생각해서 하나씩 찾아보면서 수정해보았습니다.

 

목차


    0. 리버스 프록시..가 뭔데..

    도대체 URL 맨 뒤에 포트번호가 뭐지.. 라고 생각하신다면 아래 사진을 보시면 간단하게 확인하실 수 있습니다.

    메인 페이지의 맨 뒤에 3000번 포트가 달려있죠..

     

     

    실제 저희가 접속하는 사이트들에서는 URL 맨 뒤에 이런 포트번호를 입력하는 경우는 거의 없죠?

    그렇기 때문에 격렬히 지우고 싶었습니다.

     

    우리가 원하는 것은 want-some-taste.o-r.kr 주소만 입력했을 때 저 창이 뜨게 하고 싶은 것입니다.

    이걸 위해서는 포트포워딩이라는 작업이 필요한데요!

     

    말 그대로 want-some-taste.o-r.kr를 치면 want-some-taste.o-r.kr:3000 으로 이동하게 만들면 됩니다!

    우리가 실제로 서비스를 구동할 때는 3000번 포트에 매핑을 해야 하니까요.

     

    이 작업을 하기 위해서는 리버스 프록시를 할 수 있게 만들어주는 도구인 NginX를 사용할 수 있습니다!

     

     

    ... 포트포워딩은 대충 알겠는데, 그럼 도대체 리버스 프록시가 뭐냐구요..???

     

     

    리버스 프록시청을 받았을 때 서버로 요청이 도달하기 전에 일시적으로 거치는 곳이라고 생각할 수 있습니다.

     

    리버스 프록시의 장점은 바로 서버로 가지 않고 중간다리를 한번 거쳐서 가기 때문에 서버의 부하가 적은 곳으로 요청을 보내는 로드밸런싱이 가능해진다는 점이 있습니다.

    또한 리버스 프록시에서 요청을 한번 확인한 후에 필요한 서버로 요청을 전달하기 때문에 보안에도 훨씬 좋습니다.

    그리고 서버에 요청이 도달하기 전에 먼저 가로채서 미리 정해진 위치(포트)로 요청을 전달할 수 있게 해주는 포트포워딩 기능도 사용할 수 있게 됩니다.

     

    이 외에도 log 작성, 캐쉬 사용, 부하 감소로 인한 웹 서버 속도 증가 등 다양한 장점이 있기 때문에 리버스 프록시를 사용합니다.

     

    리버스 프록시 서버의 대표주자가 바로 NginX이기 때문에 저도 NginX를 사용해서 리버스 프록시를 하려는 것이죠! 

     

    리버스 프록시를 도식화한 모습

     


    1. 이제 지워보자!

    먼저 서버에 접속합니다.

    저는 putty를 통해서 서버에 접속했는데, 접속 방법은 SSH를 사용해도 되고.. 자기 마음입니다!

     

    서버에 접속한 후 NginX를 우분투에 설치합니다.

    아래 명령어를 참조하시면 설치에 조금이나마 도움이 될수도..?

    # apt repository 에 설치하고자 하는 nginx 버전 추가 
    # ubuntu 버전 (18.04: bionic, 16.04: xenial)
    sudo touch /etc/apt/sources.list.d/nginx.list
    echo "deb http://nginx.org/packages/ubuntu/ bionic nginx" | sudo tee -a /etc/apt/sources.list.d/nginx.list
    echo "deb-src http://nginx.org/packages/ubuntu/ bionic nginx"| sudo tee -a /etc/apt/sources.list.d/nginx.list
    
    # 인증 키 등록
    wget http://nginx.org/keys/nginx_signing.key
    sudo apt-key add nginx_signing.key
    
    # 저장소 업데이트
    sudo apt-get update
    
    # nginx 설치
    sudo apt-get install nginx

     

     

    이렇게 설치만 해도 자동으로 NginX가 동작하는 상태가 됩니다.

    실제로 netstat으로 찍어보면 80번 포트에서 NginX가 잘 동작하고 있는 모습을 확인하실 수 있습니다.

     

     

    이제 want-some-taste.o-r.kr로 접속을 해봅니다. (80번 포트는 굳이 입력하지 않아도 자동으로 80번 포트로 연결됩니다!)

     

    어.. 그런데 왜 동작하지 않을까요? (IP주소는 혹시 모르니 지우겠습니다..)

     

     

    도대체 뭘까.. 하면서 한참을 헤맸는데 알고보니 ACG(Access Control Group)를 열지 않았더군요..

    (TMI : ACG는 방화벽 같은 개념이라고 생각하시면 됩니다!)

     

    ACG에 대해서 더 자세히 알고 싶으시다면 네이버 클라우드 플랫폼 홈페이지에 보다 자세히 나와있으니 참고하세요!

     

     

    방화벽 설정(ACG) - Server 사용

     

    guide.ncloud-docs.com

     

    아무튼 80번 포트 사용에 대한 허가를 하지 않았으니 당연히 접근이 되지 않았습니다. (NCloud 보안짱짱;;)

     

     

    네이버클라우드에 접속해서 서버에서 ACG를 열어줍니다.

     

    원인을 찾았으니 다시 접속합니다.

    아.. 너무 잘됩니다 ㅠㅠ 

     

     

    이제 우분투의 /etc/nginx/conf.d/default.conf 를 수정합시다.

     

    location / {} 내부 커서가 있는 곳에

     

    proxy_pass http://localhost:3000;

     

    을 넣어줍니다. 

     

    명령어를 조금 풀어서 살펴보면 http://localhost/ 주소로 요청이 들어왔을 때 http://localhost:3000 으로 보내라는 명령어입니다! (location /이 http://localhost/ 입니다!)

     

    이것만 넣어주면!! 더이상 포트번호를 입력하지 않아도 정상적으로 사이트에 접속할 수 있게 됩니다!!

     

     


    P.S. 이미 이력서에 이전 주소를 작성한 팀원이 있을 것 같아서, 기존처럼 3000번 포트를 넣어도 접속할 수 있습니다. (포트포워딩만 했기 때문에...)

     

    P.S.2. 별 것 없지만 사이트에 접속하고 싶다면 아래 링크로 들어오시면 사용하실 수 있습니다. 서버가 언제까지 열려있을 지는... 잘 모르겠지만....

     

     

    http://want-some-taste.o-r.kr/

     

    want-some-taste.o-r.kr

     

    반응형
    • 네이버 블로그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기