Nginx | 개요

Faithful Dev·2025년 3월 12일

Nginx(엔진엑스)는 고성능 HTTP 및 리버스 프록시 서버, 메일 프록시 서버, TCP/UDP 로드 밸런서로 사용되는 오픈 소스 소프트웨어이다. 원래 높은 연결을 처리하기 위해 설계되었으며, 현재는 웹 서버 및 애플리케이션 서버의 앞단에서 로드 밸런싱, 캐싱, 보안 강화 등의 역할을 수행하는 데 널리 사용된다.


주요 특징

비동기 이벤트 기반 구조

  • Nginx는 이벤트 기반(Event-Driven), 논블로킹(Non-Blocking) 방식으로 동작하며, 하나의 스레드가 수천 개의 요청을 처리할 수 있다.
  • 이를 통해 높은 동시성(Concurrency)을 제공하고, 메모리 사용량을 최소화한다.

리버스 프록시(Reverse Proxy)

  • 클라이언트 요청을 여러 백엔드 서버로 전달하는 리버스 프록시 서버로 활용 가능하다.
  • 백엔드 서버 부하를 분산하고, 로드 밸런싱SSL 종료(TLS Termination) 역할을 수행한다.

로드 밸런싱(Load Balancing)

  • 여러 서버로 트래픽을 분산하여 부하를 줄이는 기능을 제공한다.
  • 라운드 로빈(Round Robin), IP 해시(IP Hash), 가중치(weighted) 등의 방식으로 분배 가능하다.

정적 콘텐츠 처리 최적화

  • HTML, CSS, JavaScript, 이미지 등의 정적 파일을 빠르게 제공할 수 있다.
  • 캐싱을 활용하여 성능을 더욱 향상할 수 있다.

보안 기능 강화

  • DDos 공격 방어, SSL/TLS 지원, 인증 및 접근 제어 기능을 제공한다.
  • 웹 애플리케이션 방화벽(WAF)과 연동하여 보안을 더욱 강화할 수 있다.

Nginx vs. Apache 비교

비교 항목NginxApache
아키텍처비동기 이벤트 기반멀티스레드 기반
동시 연결 처리매우 효율적스레드/프로세스 증가 시 리소스 사용 증가
정적 파일 처리 속도빠름상대적으로 느림
리버스 프록시 및 로드 밸런싱기본 제공모듈 추가 필요
설정 파일 형식단순하고 직관적복잡한 설정 가능

주요 설정 예제

기본 웹 서버 설정

server {
    listen 80;
    server_name example.com;
    
    location / {
        root /usr/share/nginx/html;
        index index.html;
    }
}
  • example.com 도메인으로 들어온 요청을 /usr/share/nginx/html/index.html에서 처리.

리버스 프록시 설정 (백엔드 서버 연결)

server {
    listen 80;
    server_name api.example.com;

    location / {
        proxy_pass http://localhost:8080; # 백엔드 서버로 요청 전달
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
  • 클라이언트가 api.example.com에 요청을 보내면, 내부 8080 포트에서 동작하는 백엔드 서버로 요청을 전달.

로드 밸런싱 설정

upstream backend_servers {
    server backend1.example.com;
    server backend2.example.com;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_servers;
    }
}
  • backend1.example.com, backend2.example.com으로 요청을 분산하여 로드 밸런싱.

활용 사례

  • 웹 서버: 정적 파일 서빙, 캐싱을 활용한 성능 향상
  • 리버스 프록시: 백엔드 서버 보호 및 SSL 종료
  • 로드 밸런서: 여러 서버로 트래픽 분산
  • API Gateway: 마이크로서비스 아키텍처(MSA)에서 API 요청을 처리하는 게이트웨이 역할
  • 보안 기능 강화: DDos 방어, WAF 연동

정리

Nginx는 가볍고 빠른 웹 서버로서 고성능과 확장성이 필요한 환경에서 많이 사용된다. 리버스 프록시, 로드 밸런싱, 보안 강화 등 다양한 기능을 제공하므로 대규모 트래픽을 처리하는 웹 서비스에 필수적이다.

profile
Turning Vision into Reality.

0개의 댓글