[NGINX] NGNIX란 무엇인가

Jaehyeong Kwon·2023년 2월 27일
0

INFRA

목록 보기
1/5

1. NGINX란?


  • NGINX는 경량 웹 서버입니다.
    클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용되기도 하고, Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 합니다.

  • 비동기 이벤트 기반 아키텍쳐를 사용하여 노픙ㄴ 성능과 확장성을 제공합니다. 이러한 아키텍처는 요청 처리 중에 대기하는 연결을 최소화하여 동시에 수천 개의 연결을 처리할 수 있습니다. 이는 웹 서버의 높은 트래픽 처리 요구 사항에 특히 유용합니다.

  • 메일 프록시 서버로 사용될 수 있습니다. 메일 프록시 서버는 SMTP 및 POP3 요청을 수신하고 백엔드 메일 서버로 전달합니다. 이를 통해 여러 메일 서버를 관리하고 이메일 로드 밸런싱을 수행할 수 있습니다.


2. NGINX의 흐름

  • NGINX는 Event-Driven 구조로 동작하기 때문에 한 개 또는 고정된 프로세스만 생성하여 사용하고, 비동기 방식으로 요청들을 Concurrency 하게 처리할 수 있습니다.

  • 위의 그림에서 보이듯이 NGINX는 새로운 요청이 들어오더라도 새로운 프로세스와 쓰레드를 생성하지 않기 때문에 프로세스와 쓰레드 생성 비용이 존재하지 않고, 적은 자원으로도 효율적인 운용이 가능합니다. 이러한 NGINX의 장점 덕분에 단일 서버에서도 동시에 많은 연결을 처리할 수 있습니다.

Event-Driven

  • apache의 C10k 문제점 해결 (동시 접속자수가 1만명이 넘어갈 때 효율적 방안)을 위해 만들어진 Event-Driven 구조의 웹서버 SW 라고 합니다. OSI 7 계층 중 Application Level 아래의 Level 에서 NGINX같은 웹서버가 HTTP 통신을 담당합니다.

3. NGINX의 구조

  • NGINX는 하나의 Masster Process와 다수의 Worker Process로 구성되어 실행됩니다. Master Process는 설정 파일을 읽고, 유효성을 검사 및 Worker Process를 관리합니다.
  • 모든 요청은 Worker Process에서 처리합니다. NGINX는 이벤트 기반 모델을 사용하고, Worker Process 사이에 요청을 효율적으로 분배하기 위해 OS에 의존적인 메커니즘을 사용합니다.
  • Worker Process의 개수는 설정 파일에서 정의되며, 정의도니 프로세스 개수와 사용 가능한 CPU 코어 숫자에 맞게 자동으로 조정됩니다.

profile
나무와 같이 성장하는 사람

0개의 댓글