[TIL] Nginx, 리버스 프록시, 로드 밸런서

2025-05-24 TIL

📝 TIL (Today I Learned)
🔗 원본 이슈: #61
📅 작성일: 2025-05-24
🔄 최종 수정: 2025년 05월 27일


🍀 새롭게 배운 것

1️⃣ Nginx란?

  • **Nginx(엔진엑스)**는 고성능 웹 서버 소프트웨어다.
  • 원래는 정적 콘텐츠 제공을 위한 웹 서버였지만, 현재는 리버스 프록시, 로드 밸런서, API Gateway, 캐시 서버 등 다용도로 활용된다.

✅ Nginx의 주요 기능

기능설명
웹 서버HTML, CSS, JS 같은 정적 파일 제공
리버스 프록시클라이언트 요청을 내부 서버에 전달
로드 밸런서여러 서버에 트래픽을 분산하여 처리
캐시 서버응답을 캐싱해 성능 향상
SSL 종단 처리HTTPS 인증서 처리 (Let’s Encrypt 등과 연동)

🔄 리버스 프록시란?

  • 클라이언트는 Nginx에 요청을 보내고, Nginx는 **백엔드 서버(Apache, Spring, Node 등)**에 요청을 전달한 후 응답을 다시 클라이언트에 전송한다.
[Client] → [Nginx] → [Spring Server]
  • 보안, 로드 밸런싱, 서버 분리 등 다양한 이유로 활용됨

⚖️ 로드 밸런서

  • 요청을 여러 서버에 고르게 분산시켜 트래픽 집중을 막고 가용성을 높임

Nginx에서 로드 밸런싱 구성 예시:

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

server {
    location / {
        proxy_pass http://backend;
    }
}

upstream 블록을 통해 백엔드 서버를 그룹핑하고, Nginx가 자동으로 라운드로빈 방식으로 분산 처리


📦 정적 파일 서버로의 활용

  • HTML/CSS/JS 파일을 빠르게 서빙할 수 있음
  • WAS(Spring, Node 등)에서 정적 리소스를 분리하면 서버 부하를 줄일 수 있음
server {
    listen 80;
    location / {
        root /usr/share/nginx/html;
        index index.html;
    }
}

🔒 HTTPS 설정

  • Let’s Encrypt와 Certbot을 이용해 무료 SSL 인증서 발급 가능
  • HTTPS로 종단 보안(SSL Termination)을 적용하여 보안 강화

🧠 함께 알아두면 좋은 심화 키워드

키워드설명
리버스 프록시Nginx가 중간에 서서 내부 서버 대신 요청 응답 처리
포워드 프록시사용자의 요청을 외부로 보낼 때 중개하는 프록시
CDN (Content Delivery Network)정적 리소스를 전 세계에 분산 저장하여 빠르게 전송
캐싱 정책Cache-Control, ETag를 이용한 정적 자원 캐싱
Blue-Green DeploymentNginx로 배포 서버를 스위칭하여 무중단 배포 실현

✍️ 오늘의 요약

  • Nginx는 단순 웹 서버 그 이상으로, 프론트와 백엔드 사이의 허브 역할을 한다.
  • 리버스 프록시, 로드 밸런서, 정적 파일 서버, SSL 처리까지 담당할 수 있는 멀티플레이어
  • 실제 운영 환경에서는 Spring Boot와 Nginx 연동, HTTPS 적용, EC2 배포 시 로드밸런싱 구성 등을 할 수 있도록 익숙해져야 한다