[TIL] Nginx, 리버스 프록시, 로드 밸런서
in TIL on Til Last modified at:
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 Deployment | Nginx로 배포 서버를 스위칭하여 무중단 배포 실현 |
✍️ 오늘의 요약
- Nginx는 단순 웹 서버 그 이상으로, 프론트와 백엔드 사이의 허브 역할을 한다.
- 리버스 프록시, 로드 밸런서, 정적 파일 서버, SSL 처리까지 담당할 수 있는 멀티플레이어
- 실제 운영 환경에서는 Spring Boot와 Nginx 연동, HTTPS 적용, EC2 배포 시 로드밸런싱 구성 등을 할 수 있도록 익숙해져야 한다