잡다한지식

Nginx의 의미, 특징, 사용 방법 훑어보기

류창 2024. 4. 22. 16:18
반응형

 

 

NGINX가 무엇일까?

 

nginx는 WAS (Web Application Server)의 하나의 종류며, 

 

흔히, nginx가 뭐냐고 물을때, 같이 세트로 설명하는게 Apache Tomcat이다.

 

그야 당연하게도, 스프링이 기본적으로 Apache Tomcat 을 지원하고,

 

대학교 학부생이나 , 코딩을 처음 접하는 사람은 전부 Tomcat으로 시작했기 때문이다.

 

 

 

Apache vs Nginx

 

Apache의 문제:

웹서버의 선두주자는 Apache 였다.

그렇다면 Apache 쓰다가 Nginx으로 왜 넘어왓을까?

 

그야 당연히 Apache에 기술적인 한계를 맞이하여서 Nginx로 편승 할 수 밖에 없는 상황이 와서 그렇다.

 

Apache가 무적이면 굳이 시간과 돈을 들여 기술을 바꿀 의미가 없으니까

 

Apache의 기본 구조는 Process Driven이다.

 

Process Driven이란, 1요청 1 프로세스(스레드) 라고 생각하면된다.

 

헌데, 이 요청이 순간적으로 몰려 동시에 1만건 이상이 들어오면

1만건 이상의 프로세스 생성을 하지못해 처리가 불가능하다.

 

이걸 C10K 문제라고도 불린다.

 

아파치의 문제점

 

 

Nginx의 해결법:

위에서 서술한 C10K문제를 해결해 주는것이 Nginx의 구조다.

 

Nginx는 Event Driven으로 진행된다.

 

여기서 Event Driven이란,  요청을 이벤트로서 처리하여 하나의 프로세스에 

여러개의 이벤트를 쌓아서 처리하는형식입니다.

 

즉, 적은 프로세스로 수천만건의 요청 처리가 가능한 웹 서버 환경입니다.

 

 

NGINX의 단점 이였던 것:

Event Driven은 요청을 스택처럼 쌓아서 처리하는 형식이라고 했는데,

이런 구조는 단점이 금방 드러납니다.

 

요청 하나가 무지막지하게 길다면 남은 요청은 뒤에서 계속 기다릴수밖에없습니다.

 

Nginx의 탁월한 트래픽 관리

 

헌데, 그 단점을 1.7.11버전 이후 Thread Pool이라는 개념을 도입해 해결했습니다.

 

상대적으로 처리시간이 긴 작업요청은  Thread Pool에 위임하여 처리하게 하였습니다.

                                                                                                                                                                                                    

Nginx의 무중단 배포

 

 

무중단 배포란?

 

기존 프로젝트는 업데이트를 하기위해선, 서버를 재부팅 하기위해  잠시 서버를 끄는 시간이 필요합니다.

But, 무중단 배포를 지원하면, 서버가 끊김없이 업데이트 사항을 바로 적용할수있습니다.

 

 

NGINX의 리버스 프록시(reverse proxy)의 특징을 통해 다음과 같은 행동이 가능합니다.

 

port:8081이 구버전 서버라면,  port:8082는 업데이트가 적용된 ver 1.1입니다.

 

 

Nginx의 config 파일을 들어가서 요청을 건네주는 port만 1.0서버에서 1.1서버로 변경 후,

nginx reload 명령을 프롬포트에서 입력하면, 끊김없는 무중단 배포를 경험 할 수 있습니다.

 

 

 

사실 Nginx는 2008년부터 모바일 시장이 들어옴으로써, 비교할수없는 네트워크 트래픽을 감당하기위해 

각광을 받고 있었습니다.

 

실무를 대비하고 싶은 주니어 개발자나,  대규모 트래픽을 감당하고 싶은 개발자는 

고려가 가능한 기술입니다.

 

NGINX는 이것 외에도, 다양한 부가 기능인

[캐싱, SSL termination 지원, HSTS, CORS처리, TCP/UDP 커넥션 부하 분산, HTTP/2]

를 지원합니다.

 

 

 

초 간 단 NGINX 사용법

 

nginx가 뭔지는 알았으니, 간단하게 테스트 프로젝트를 올려봅시다.

 

사전 준비물 : Node.js 설치를 가정합니다.

 

필자는 vue 프로젝트를 올려보겠습니다.

 

vue가 아니면  NGINX  config부터 보시면 됩니다.

 

1. vue , vue cli 설치

 

npm install -g vue

npm install -g @vue/cli

 

2. vue 프로젝트 생성

 

vue create [프로젝트명]

 

3. vue 빌드하기

 

cd [프로젝트명]

npm run build

 

 

NGINX에 배포하기 

 

1. NGINX 설치

 

https://nginx.org/en/download.html

 

nginx: download

 

nginx.org

 

2.nginx 구동

 

cd [nginx 경로]

nginx 

또는 nginx 경로를 이동하여 nginx.exe 실행

 

 

3. nginx config 설정

 

nginx - conf - nginx파일   (필자는 메모장으로 염)

 

 

 

여기서 root 부분을 내가 올리고싶은 프로젝트 빌드 경로를 셋팅합니다.

 

그 후 , nginx reload를 입력하세요.

 

 

 

 

Nginx의 기본포트는 80번포트로   localhost:80 번으로 vue.js의 빌드 파일이 잘 실행되어

nginx에 올라간것을 확인할수있습니다.

 

반응형