본문 바로가기
back-front end

Nginx를 이용한 https구현하기(aws ec2 - linux ubuntu-20.04 LTS) -1

by lucian 2022. 9. 16.

https는 http에 보안을 추가한 프로토콜이다.

http + Secure = https라 한다.

SSL/TLS로 4계층(Transfort)와 5계층(application) 사이에 보안 보안 소켓 계층으로 이 보안층의 SSL/TLS 프로토콜과 HTTP 프로토콜이 합쳐진 것을 HTTPs라 생각된다.

 

HTTPs를 서버에서 설정하기 위해선 먼저 인증된 기관(CA)에서 받은 우리가 안전하다. 우리는 아무 해가 없는 서버다라는 인증서를 가지고 와야한다.

 

NginX는 동시 접속 처리에 특화된 웹서버이고 정적 호스팅에 특화되어 있는 경량 웹 서버라고 한다.

서버에 부하도 줄일 수 있고(로드 밸런싱),  줄일 수 있다 보니 리버스 프록시 서버로도 사용이 가능하다.

즉 대량의 트래픽을 하나의 싱글 서버로 감당해 내기가 어려운데 이 프록시 서버를 앞단에 두면 적절하게 트래픽을 나눠 줄 수 있다. 이러면 해커의 DDoS 공격을 막는데 유용하고 본래 서버의 IP 주소를 노출시키지 않아도 된다는 장점을 가지고 있다. 또한 SSL암호화/복호화에 도움이 된다. 보통 암호화 복호화를 할 경우 메인 서버에 부하가 많이 되는데 이를 리버스 프록시 서버가 대신해줘서 암호화/복호화를 해주므로 메인 서버는 부담을 적게 가지면서 클라이언트와 안전한 통신을 할 수 있다는 장점이 있다.

 

그래서 NginX를 프록시 서버로 두고 HTTPs를 다는 것이라 생각한다.

 

 

구현 

aws ec2 - ubuntu 20.04 LTS를 생성한다.

보안 그룹으로 들어가 인바운드 규칙을 편집한다.

http(80)와 https(443)포트를 열어준다.

또한 5000번 포트는 node.js express로 만든 노드 프로세서가 서버에서 잘 돌아가는지 시험할려고 열어놨다.

 

 깃 배쉬로 ec2 서버로 접속한다.

ssh -i "ec2 local주소" ubuntu@퍼블릭IPv4주소
// update
sudo apt-get update

 

접속하고 업데이트 했으면 이제 필요한 패키지를 설치해야한다.

나는 js의 node.js express 프레임워크로 메인 서버를 만들었기 때문에 node.js, npm(node package manage)와 pm2 라이브러리를 설치한다.

node.js

curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -

npm

sudo apt-get install -y nodejs

pm2

sudo npm install -g pm2

 

 

이제 내 ec2서버에 내가 local에서 만든 서버를 올린다. (filezilla를 써도 되고, github로 clone를 해도 되고 무방하다.)

mkdir test로 test파일을 만든 후에 그 안에 나의 메인서버를 filezilla로 올렸다.

왼쪽은 내 local에 있는 디렉토리이고 오른쪽이 ec2서버의 디렉토리이다.

여기에 node_modules를 제외한 나머지 파일들을 넣어놨다.

접속해있는 ec2서버에서 test파일로 들어가 node_modules를 우분투에 맞게 설치해준다.

npm i

 

ec2 서버에서 잘 돌아가는지 테스트 해보자.

node app.js

node app.js를 친다음 크롬창에서 내 ec2서버 퍼블릭 주소로 들어가보자.

나의 메인 서버는 포트번호를 5000번으로 연결시켰기에 12.456.789.12:5000 이런 식이다.

이렇게 Hello, This is my homework page main이 잘나온 것을 볼 수 있다. 이렇게 5000번 포트가 외부에서 접속이 가능한 것은 위에서 인바운드 규칙으로 5000번 포트를 열어줬기 때문이다.(추후에 닫아줘야함)

 

이제 ctrl+c를 눌러 끄고 pm2로 app.js를 계속 켜두자.

pm2 start app.js

 

이제 nginx를 깔 준비가 다 되었다. 그러나 https를 실행하기 위해서 도메인 주소가 필요하다.

그렇기에 가비아에서 싼 거 하나 샀다... 3000원정도,,,

도메인을 하나 산다음 설정을 해줘야한다.

가비아 홈페이지 중간쯤에

DNS 전용 관리 - DNS 관리 툴 - 설정 - DNS 레코드 수정

값/위치에는 ec2 퍼블리 IP가 들어가 있다.

 

 

 

 

이제 nginx를 깔고 https 설정을 해줄 준비가 끝났다... 너무 길어 다음 포스트로 넘어가다....

이어진 포스터

https://lucian-blog.tistory.com/144

 

Nginx를 이용한 https구현하기(aws ec2 - linux ubuntu-20.04 LTS) -2

이 포스트는 이전 포스트를 이어서 쓴 글입니다. https://lucian-blog.tistory.com/143 Nginx를 이용한 https구현하기(aws ec2 - linux ubuntu-20.04 LTS) -1 https는 http에 보안을 추가한 프로토콜이다. http +..

lucian-blog.tistory.com

 

댓글