필수 시청: https://youtu.be/6FAwAXXj5N0?si=eOYCxqige9Iki305
<aside> 🌉 NGINX는 웹 서버, 리버스 프록시 서버, 로드 밸런서 및 HTTP 캐시로 사용되는 오픈 소스 소프트웨어입니다. 고성능, 안정성, 풍부한 기능, 간단한 설정 및 낮은 리소스 소비로 잘 알려져 있습니다. NGINX는 이벤트 기반 아키텍처를 사용하여 동시 연결을 효율적으로 처리하며, 이는 높은 트래픽 웹사이트에서 특히 유용합니다.
</aside>
NGINX가 클라이언트로부터 요청이 올 때마다 해당 요청을 이벤트로 간주하고, 이 이벤트를 처리하기 위해 미리 정의된 핸들러(처리기)를 실행한다는 것을 의미합니다.
이벤트 기반 아키텍처의 특징
NGINX는 비동기 I/O를 사용하여 I/O 작업(읽기, 쓰기)을 비동기적으로 처리합니다. 이는 이벤트 루프가 블로킹되지 않고 계속해서 새로운 이벤트를 감지하고 처리할 수 있게 합니다. 비동기 I/O의 주요 이점은 다음과 같습니다:
마스터 프로세스: NGINX의 메인 프로세스로, 설정 파일을 읽고, 워커 프로세스를 생성하고 관리합니다. 또한, 마스터 프로세스는 워커 프로세스가 비정상적으로 종료되었을 때 새로운 워커 프로세스를 다시 시작하는 역할도 합니다.
워커 프로세스: 클라이언트의 요청을 실제로 처리하는 프로세스입니다. 각 워커 프로세스는 단일 스레드로 동작하며, 비동기 이벤트 루프를 통해 여러 클라이언트의 요청을 동시에 처리할 수 있습니다.
각 워커 프로세스:
worker_processes auto;
events {
worker_connections 1024;
}
여러 워커 프로세스:
우리는 NodeJS로 웹서버를 이미 개발을 했는데, 왜 또 Nginx로 웹서버를 병행해서 쓰는가.