실습에서 도커로 Nginx를 구동시키는 실습이 있었다.

실습 진행 중에 내가 모르는 단어가 너무 많아 한번 정리하기로 하였다.

 

우선 Nginx 란 무엇인지 먼저 알아보자

 

Nginx

nginx 는 쉽게 말하면 웹 서버이다. 서버란 무엇이냐 ! 서버는 아주 쉽게 생각하면 컴퓨터이다. 다만 사람에도 종업원과 고객 이 있듯이 컴퓨터에도 종업원과 고객이 있다 . 서버는 고객, 즉 클라이언트에게 무언가를 제공하는 컴퓨터이다.

클라이언트는 어떤 서비스를 이용하기위해 네트워크를 통해 요청을 보낸다. 네트워킹은 그러한 과정을 의미하며 html, css 등의 파일을 연결을 통해 다른 컴퓨터로 보내는 것이다. 이러한 연결망이 네트워크라고 할 수 있다. 

웹 개발에서의 클라이언트는 크롬, 사파리, 익스플로어 등 인터넷 브라우저라고 할 수 있다.

 

 

 

웹 서버는 아파치, nginx 등이 있으며 html , css, js 와 같은 정적 파일들을 클라이언트의 요청에 따라 제공하는 소프트웨어를 말한다.

웹 서버는 클라이언트와 통신하기 위해 http 프로토콜을 사용한다.

 

프로토콜은 상호간에 정의한 규칙을 의미한다. 특정 기기간 데이터를 주고받는 통신을 하기 위해선 이 규칙에 따라야한다. 웹 프로토콜에는 http 뿐만 아니라 FTP, SMTP 등 각 서비스에 맞는 통신규약이 존재한다. 

 

흔히들 http 와 https 들을 봤을 것이다. s 의 의미는 무엇일까? s 는 secure 보안을 의미한다. http 를 암호화하여 인증서를 추가한 것이 바로 https 이다.

 

 

다음은 WAS 에 대해 알아야한다.

우리가 볼 수 있는 html, css, js 와 같은 파일들은 정적 파일로 웹 서버에서 제공할 수 있다. 다만 동적인 처리를 위해서는 이 WAS 가 필요하다. 예를 들어 회원가입이나 로그인 등의 로직을 처리하거나 데이터베이스 연동, 트랜잭션 관리, 보안, 로깅 등의 일 말이다. WAS 를 통해 웹 어플리케이션의 안정성과 성능을 향상시킬 수 있으며 개발자들은 어플리케이션 개발에만 집중할 수 있다. WAS의 예로는 톰캣, nodejs 등이 있다. 

 

 

 

다음으로 DB 데이터베이스에 관해서도 알아야한다.

데이터베이스는 조직 또는 개인이 정보를 저장, 관리, 검색할 수 있는 시스템을 말한다. 

 

 

 

웹 서비스를 요청할 때는 클라이언트 -> 웹 서버 -> WAS -> DB 의 순으로 요청된다. 크롬과 같은 브라우저가 Nginx와 같은 서버에 DB 관련 요청을 하면 톰캣이나 nodejs 같은 WAS 에서 DB에 접근한다. 요청에 응답할 때는 반대의 순서로 응답된다. 

 

 

 

 

 

그렇다면 우리는 nginx 와 같은 서버를 왜 사용하는 지를 알아야한다.

Nginx는 리버스 프록시 사용이 가능하다. 프록시란 언어는 범용적으로 사용되나, 여기서는 "대리"라는 의미로 이해하자. 인터넷 접속을 할 때 중간 대리 역할을 하는 게 프록시 서버이다.

 

프록시는 포워드 프록시와 리버스 프록시로 나눌 수 있다.

 

 

포워드 프록시는 클라이언트(단말기기와 같은)와 인터넷 사이에서 흐름을 대신 처리하는 것을 의미한다. 특징으로는 캐싱이 있는데 클라이언트가 요청한 내용을 캐시에 둔다. 저장을 하기 때문에 시간을 줄일 수 있다. 두번째 특징으로는 익명성이 있다. 클라이언트가 요청을 했지만 포워드 프록시가 요청을 한 것처럼 서버에게 전송할 수 있다. 

 

리버스 프록시는 인터넷과 서버들 사이에 위치하고 있다. 특징에는 캐싱과 보안이 있다. 캐싱의 역할은 포워드 프록시와 비슷하다. 보안은 서버 정보를 클라이언트에게 숨길 수 있다는 이점을 가진다. 클라이언트는 요청시 리버스 프록시가 실제 서버라고 생각하여 요청하므로 실제 서버의 IP가 노출되지 않는다. 마지막은 로드밸런싱이다. 이것은 하는 경우도 있고 하지 않는 경우도 있다. 로드 밸런싱이란 해야할 작업을 나눠서 분산시키는 일이다. 요청을 각각 원하는 대로 나누어 주는 것이다. 한 마디로 서버들에게 요청을 나눠준다. 

 

 

정리하면 Nginx는 리버스 프록시 사용이 가능하여 로드 밸런싱, 백엔드 라우팅, 캐싱과 같은 이점을 갖기 때문에 

사용한다.

 

 

 

 

 

 

 

 

 

 

 

#컴공 #강의 #네트워크 #리버스프록시 #Nginx #웹서버

728x90

+ Recent posts