트래픽이 많은 웹 사이트의 서버(WAS)를 도와주는 비동기 이벤트 기반 구조의 경량화 웹 서버 프로그램
HTTP 프로토콜을 기반으로 클라이언트의 요청을 서비스하는 기능을 담당
Reverse Proxy Server
로 활용하여 WAS의 부하를 줄일 수 있는 로드밸런서의 역할을 함
- 서버 부하 방지
정적 컨텐츠 요청까지 WAS가 처리하게 될 경우, 부하가 커지고 동적 컨텐츠 처리가 지연되어 수행 속도가 느려짐
- 보안 강화
WAS와 WebServer 사이에 방화벽을 두어 WAS 접근의 보안을 강화할 수 있음
- 무중단 운영
대용량 웹 어플리케이션의 경우, 여러 WAS와 연결함으로써 무중단 운영, 장애에 쉽게 대비할 수 있음
Forward Proxy
: 서버에게 클라이언트를 감춤WebServer
는 Nginx 이외에도 Apach가 있으나 클라이언트의 요청이 무수히 많아짐에 따라서 동시 커넥션이 많아졌을 경우, 더 이상 커넥션을 형성하지 못하는 상황이 생김. 이러한 문제를 개선 하고자 Nginx를 활용
Apach의 구조
- Apach의 구조는 요청이 들어올 때 마다 프로세스를 할당하는 구조
- 이용자가 많아지면서 프로세스도 비례하여 증가, 메모리 부족을 야기시킴
- 대용량의 트래픽을 감당하기엔 적합하지 않음
Nginx의 구조
- 설정 파일을 읽고, 설정에 맞게 Worker process를 생성하는 Master process가 존재
- Worker process : 실제로 일을 하는 프로세스
- Worker process가 생성 될 때 지정된 listen 소켓을 배정, 그 소켓에 새 클라이언트 요청이 들어오면
Connection
을 형성하고 처리
Connection
은 정해진 Keep-alive 시간만큼 유지,Connection
이 형성 되었다고 해서 Worker process가 해당Connection
하나만 담당하지 않음
Connection
에 아무 요청이 없을 시 새로운Connection
을 생성 하거나 다른Connection
으로 부터 들어온 요청 처리
📌 여러 요청 중 시간이 오래 걸리는 작업이 있어도 Nginx는 Event-driven
방식으로 그러한 요청들을 따로 수행 할 수 있음
여러 개의 Connection
을 전부 Event-Handler를 통해 비동기 방식으로 처리해, 먼저 처리 되는 것부터 로직이 진행
Connection
형성과 제거, 새로운 요청 처리하는 것장점과 단점
장점
- 이벤트 중심 접근 방식을 사용하여 클라이언트 요청 제공, 제한된 하드웨어 리소스로도 여러 요청을 동시에 효율적으로 처리
- 최소한의 리소스로 웹 서버의 아키텍처를 개선하기 위해 독립형 HTTP 서버로 배치 가능
단점
- 동적 컨텐츠 기본적으로 처리 불가
- 동적 웹 페이지 컨텐츠 가진 모든 요청을 위해 외부자원과 연계
--> 프로세스 속도 저하