리버스 프록시란
클라이언트 요청을 직접 애플리케이션 서버가 아닌 Nginx가 먼저 받아, 내부 서버로 전달(proxy_pass)하는 구조입니다. SSL 종료, 정적 파일 캐싱, 접근 제어를 Nginx 단에서 처리할 수 있습니다.
기본 리버스 프록시 설정
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
여러 서버로 로드밸런싱하기
upstream 블록에 백엔드 서버 목록을 정의하면 Nginx가 자동으로 요청을 분산합니다.
upstream backend {
server 10.0.0.11:3000;
server 10.0.0.12:3000;
server 10.0.0.13:3000;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
분산 알고리즘 선택
기본값은 라운드로빈(순차 분산)이며, 접속이 몰리는 서버가 있으면 least_conn(연결 수가 가장 적은 서버 우선)을, 세션 유지가 필요하면 ip_hash(같은 클라이언트는 항상 같은 서버로)를 사용합니다.
헬스체크
특정 서버가 오류를 반환하면 Nginx는 자동으로 해당 서버를 일시적으로 제외(passive health check)하고 나머지 서버로만 요청을 보냅니다.