본문 바로가기
Nginx

[Nginx] Nginx란? 고성능 웹 서버의 핵심개념 파헤치기

by 임혁진 2025. 4. 18.

개요

현대 웹 서비스는 수많은 사용자로부터 동시에 요청을 받으며, 그 요청을 빠르게 처리해야 합니다. 이처럼 고성능과 확장성이 필수적인 시대에 탄생한 웹 서버가 바로 Nginx(엔진엑스)입니다.


Nginx의 등장배경

기존의 대표적인 웹 서버였던 Apache HTTP Server스레드 기반 동기 처리 방식을 사용했습니다. 이는 동시 접속자 수가 많아질수록 성능이 급격히 저하되는 문제를 가지고 있었고, 시스템 자원을 많이 소비했습니다.

당시 웹 서버가 C10K 문제를 처리하는 데 한계를 드러내자, 이에 대응하기 위해 Nginx가 등장하게 됩니다.


⚠️ C10K 문제란?

C10K 문제는 "Client 10,000"의 약자입니다.
이는 하나의 서버에서 10,000명 이상의 클라이언트의 동시 연결을 처리하려고 할 때 생기는 성능 문제를 의미합니다.

기존 웹 서버들은 클라이언트 연결 하나당 하나의 스레드를 생성하는 구조였기 때문에, 동시 접속 수가 증가하면 CPU 및 메모리 자원이 급격히 소모되었습니다.

이를 해결하기 위해 Nginx는 이벤트 기반 비동기 I/O 모델을 채택하여 가볍고 빠른 성능을 구현했습니다.


Nginx의 주요 특징

✅ 1. 이벤트 기반 비동기 처리

  • 단일 스레드에서 이벤트 루프(Event Loop)를 통해 수많은 요청을 처리합니다.
  • CPU와 메모리를 최소로 사용하면서도 수천~수만 건의 동시 요청을 효율적으로 처리할 수 있습니다.

✅ 2. 리버스 프록시(Reverse Proxy)

  • 클라이언트의 요청을 백엔드 서버에 전달하고, 그 응답을 클라이언트에 전달하는 중간 다리 역할을 합니다.
    • 클라이언트는 백엔드 서버의 존재를 모르고, Nginx만 바라보고 요청을 보냅니다.
    • Nginx는 요청을 받아서 알맞은 백엔드 서버(예: Node.js, Spring 등)로 전달하고, 그 응답을 클라이언트에게 돌려줍니다.
  • 보안(외부에 백엔드 서버 IP가 노출되지 않음), 로드 밸런싱, SSL 등 다양한 기능을 수행할 수 있습니다.
  • 캐싱을 통해 속도 향상

✅ 3. 로드 밸런서 역할

  • 여러 서버로 트래픽을 분산하여 서버의 부하를 줄이고 장애에 대비합니다.
  • 지원하는 로드 밸런싱 알고리즘

    방식 설명
    round-robin 기본 방식, 순차적으로 서버에 분산
    least_conn 연결 수가 가장 적은 서버에 전달
    ip_hash 클라이언트 IP에 따라 고정된 서버에 연결 (세션 유지에 유리)

    💡 마이크로서비스 환경에서, 이 기능은 트래픽 분산, 장애 대응 측면에서 필수입니다.

✅ 4. 정적 콘텐츠 서빙

  • HTML, CSS, JS, 이미지 등 정적 파일을 빠르게 응답할 수 있는 기능을 기본으로 갖추고 있습니다

PS . 🔁 포워드 프록시 vs 리버스 프록시

구분 포워드 프록시(Forward Proxy) 리버스 프록시(Reverse Proxy)
역할 클라이언트의 요청을 서버에 전달 클라이언트 요청을 대신 받아 백엔드에 전달
사용 예 학교, 회사 등에서 웹 필터링 및 캐싱 웹 서버 로드밸런싱, SSL 종료, 보안 강화
예시 VPN, 스쿼드(Squid), 브라우저 프록시 설정 Nginx, HAProxy 등
위치 클라이언트 앞단 서버 앞단

🔎 예를 들어, 회사 네트워크에서 특정 웹사이트를 차단하는 경우는 포워드 프록시,
대규모 웹 서비스에서 Nginx가 클라이언트 요청을 여러 서버로 분산시키는 것은 리버스 프록시입니다.

 

출처  https://www.cloudflare.com/ko-kr/learning/cdn/glossary/reverse-proxy/


Nginx의 활용 예시

  • 웹서버
    • 정적 콘텐츠 제공
    • 클라이언트 요청 처리
  • 리버스 프록시 서버
  • API 게이트웨이 역할
  • 로드 밸런서
  • SSL 종료 서버
    • 보안 연결을 처리하여 백엔드 서버의 부담 감소
  • 마이크로서비스 아키텍처의 진입점

🖼️ Nginx의 동작 구조

Nginx의 기본 구조는 Master-Worker 프로세스 모델로 구성되어 있습니다.

  • Master Process: 설정 파일을 읽고, Worker Process를 관리합니다.
  • Worker Process: 클라이언트의 요청을 처리하며, 각 Worker는 독립적으로 동작합니다.

이러한 구조는 높은 확장성과 안정성을 제공합니다.


관련 글 모음