본문 바로가기

# Development/DevOps

[Nginx] Nginx란 무엇인가?

Nginx란?

Nginx는 웹 서버 및 리버스 프록시 서버로 사용되는 경량 웹서버 오픈소스 소프트웨어다.

  • 다중 클라이언트 요청을 비동기적으로 처리하여 높은 처리량과 낮은 지연 시간을 보장
  • 메모리 사용량도 매우 적어서 리소스 효율성이 뛰어남

 

Nginx 활용 방법

  • HTTP Web Server로 활용
    • 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답한다.
  • Reverse Proxy Server로 활용
    • WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용한다.
** Revere Proxy
외부 클라이언트에서 서버로 접근 시, 중간에서 중개자 역할을 하여 내부 서버로 접근할 수 있도록 도와주는 서버

 

Nginx 특징

웹서버로 주로 Apache와 Nginx가 사용되는데 두개는 큰 차이점이 있다.

 

Apache

  • 클라이언트로부터 받은 요청마다 쓰레드 생성
  • 사용자가 많으면 그만큼 쓰레드가 생성됨
  • 1개 쓰래드: 1명 클라이언트 구조
  • CPU와 메모리 자원의 소모 큼

 

 

Nginx

  • 비동기 처리방식(Event-Driven) 구조
  • 한 개 또는 고정된 프로세스만 생성하여 사용
  • 동기 방식으로 요청들을 Concurrency(동시성) 하게 처리
  • 적은 자원으로도 효율적인 운용
  • 동시접속에 특화되어있다.

 

 

 

Nginx 구조

하나의 Master Process와 다수의 Worker Process로 구성된다.

 

Master Process는 기본적인 설정 및 초기화 작업을 담당하고,

Worker Process는 실제 클라이언트 요청에 대한 처리를 담당한다.

 

Master Process

  • Master Process는 Nginx 프로세스의 부모 프로세스로서, 기본적인 설정 로딩과 Worker Process들을 관리한다.
  • 설정 파일의 파싱과 로그 파일 등의 초기화 작업을 담당하여 안정적인 서비스를 제공한다.
  • Master Process는 여러 개의 Worker Process를 생성하고 관리하는데, Worker Process는 실제 요청을 처리하는 단위이다.
Master-Worker 구조는 가볍고 높은 성능을 제공하여 대규모 웹 서비스에서도 안정적이고 효율적으로 동작한다.

 

Worker Process

  • Worker Process는 Master Process로부터 생성되어 각각 독립적으로 클라이언트의 요청을 처리한다.
  • Nginx의 강점 중 하나는 비동기 처리 모델로, Worker Process가 블로킹되지 않고 다중 클라이언트 요청을 효율적으로 처리한다.
  • 각 Worker Process는 독립적인 메모리 공간을 갖고 있으므로 하나의 Worker Process가 문제가 발생하더라도 다른 Worker Process에는 영향을 미치지 않는다.
Worker Process의 독립성과 비동기 처리 방식은 서버의 부하를 분산하고 높은 확장성을 보장하여 웹 서비스의 운영과 관리를 더욱 간편하게 만들어준다.

 

 

아래는 참고하면 좋을 NGINX 성능 관련 글이다.

 

Inside NGINX: Designed for Performance & Scalability

Take a deep dive inside NGINX and learn why NGINX is perfectly suited for applications and servers that require high performance and scalability

www.nginx.com

 

 

<참고>

- https://velog.io/@wijihoon123/Nginx%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

- https://icarus8050.tistory.com/57