Nginx로 프록시서버 설정하기

문태주·2022년 9월 7일
1

EC2 배포 튜토리얼

목록 보기
8/10
post-thumbnail

지금까지 (사람마다 다르겠지만) 험난한 과정을 겪으면서 여기까지 잘 오셨습니다. 우리는 우리의 웹사이트를 ec2 서비스를 이용해서 멋지게 배포해냈습니다.

하지만 아직 끝나지 않았습니다. 우리는 우리의 유저들이 3.35.11.39:3000이라는 주소로 웹사이트에 접속하길 원치 않습니다. 적어도 포트번호(3000)를 직접적으로 노출시키는 것은 엄청난 보안의 취약점이 될 수 있습니다.

이번 시간에는 유저들이 3.35.11.39:3000이 아닌 3.35.11.39(IPv4주소)를 통해 웹사이트에 접속하도록 해보겠습니다.

이곳부터는 세부적인 설명은 생략합니다.

1. 프록시 서버란

이를 위해 우리는 프록시 서버라는 것을 활용할 것입니다.

프록시서버는 클라이언트(유저)가 자신(프록시서버)를 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 말합니다.

다시 말해, 클라이언트가 3.35.11.39을 통해 들어오면 프록시서버를 통해 3.35.11.39:3000이나 3.35.11.39:5000 등의 다른 서비스로 이동시켜주는 서비스입니다.

여기서 본래 3.35.11.39은 기본 포트 80번을 가지고 있습니다. 프록시서버는 이를 받아서 3000번 또는 8000번으로 유저들을 이동시켜줄 것입니다. 해당 본문에서는 프론트엔드 서비스인 3000번 포트로 유저들을 이동시킬 것입니다.

2. Nginx 다운로드

Nginx는 웹서버 프로그램입니다. 여러가지 다양한 사용 방식이 있지만 우리는 리버스 프록시(프록시서버)로써의 역할을 알아볼 것입니다. Nginx에 대해 더 자세히 알고 싶다면 이 글을 참고하세요 -> https://whatisthenext.tistory.com/123


i) 위와 같이 SSH를 통해 우분터 서버에 접속합니다. (AWS 인스턴스에 접속합니다.)

sudo apt-get install nginx

ii) 위와 같은 명령어로 nginx를 다운 받습니다.

nginx -v

iii) 위와 같은 명령어로 nginx가 깔렸음을 확인합니다.

iv) 나의 IPv4 주소(3.35.11.39)를 통해 들어가면 다음 화면이 뜰 것입니다.

3. conf.d 환경설정 하기


i) cd /etc/nginx 명령어로 nginx 폴더로 이동합니다.

ii) nginx의 폴더구조는 다음과 같습니다. 여기서 우리가 주로 살펴볼 내용은 conf.d입니다.

iii) cd conf.d로 이동해서 구조를 살펴봅시다. 아마 저와는 다르게 default라는 이름의 파일이 있을 것입니다.

rm default

iv) 위와 같은 명령어로 default 파일을 삭제해줍니다. 우리는 우리만의 설정 파일을 만들어 줄 것입니다.

sudo nano 파일이름

v) 위와 같은 명령어로 파일을 열어줍니다.

vi) 위와 같은 화면이 나올 것입니다.

vii) 위와 같이 적어줍니다. listen 80;은 "3.35.11.39" 등으로 들어왔을 때 기본포트가 80임을 의미합니다.

server_name에는 여러분의 DNS(example.com) 또는 IPv4(3.35.11.39<-이런거)를 적어주시면 됩니다.

location 아래의 proxy_pass에 주목합시다. 여기서 127.0.0.1은 localhost, 즉 여러분의 우분투 서버(ec2 인스턴스)를 의미합니다. 여기서 포트번호는 3000, 4000 등이고 프론트라면 아마 3000일 것입니다.

정리하면, 여기서 nginx는 유저에게 3.35.11.39와 같은 주소를 받은 후, 그 nginx가 위치한 우리의 우분투 서버의 3000번 포트(3.35.11.39:3000)로 유저를 되돌려주는 것입니다.

ctrl + o //저장
ENTER //확인
ctrl + x //나가기

위 명령어들을 통해 nano 편집기에서 저장하고 나와줍시다.

sudo service nginx restart

viii) 위 명령어를 통해 nginx를 재시작해 줍니다.

ix) IPv4 주소를 통해 nginx가 잘 작동함을 확인해줍니다.

4. 나아가서

nginx로 리버스 프록시를 설정한 이후에는 기존에 설정했던 CORS가 제대로 안 먹힐 것입니다. 이제 프론트가 3.35.11.39:3000가 아닌 3.35.11.39에서 요청을 보내고 있기 때문이죠. 이를 감안하여 다시 백엔드의 CORS 설정을 해주셔야 합니다.

다음 장에서는 3.35.11.39가 아닌 www.example.com 이런 식으로 우리 서비스를 배포하기 위해서 DNS를 설정하는 법에 대해 알아보도록 하겠습니다.

profile
HTML 개발자

0개의 댓글