Nginx

리버스 프록시와 로드 밸런싱

Nginx는 외부 요청을 받아서 내부 서버로 전달하는 리버스 프록시 서버. 경로별 라우팅과 로드 밸런싱을 처리한다.

Gateway

개념

Nginx는 리버스 프록시·로드 밸런서·정적 파일 서버 역할을 하나의 프로세스에서 처리하는 경량 웹 서버다. 외부 요청을 받아서 내부 서버로 전달하는 "안내데스크" 역할을 한다. 단일 서버에서 여러 서비스를 호스팅하거나, 여러 서버를 묶어 로드 밸런싱할 때 기본 선택지다.

왜 필요한가

앱 서버를 곧바로 인터넷에 노출하면 문제가 생긴다.

  • 80/443 포트는 하나인데 서비스는 여러 개 돌려야 함
  • TLS(HTTPS) 종료 처리가 앱마다 필요
  • 정적 파일을 앱 서버가 서빙하면 비효율적
  • 앱 서버가 재시작할 때 502 그대로 노출

Nginx는 이 공통 앞단 작업을 맡아서 앱 서버를 얇게 유지한다.

리버스 프록시

외부에서 온 요청을 받아서 내부 서버로 전달하는 것.

server {
    location /login   { proxy_pass http://서버A; }
    location /payment { proxy_pass http://서버B; }
}

경로(/login, /payment)로 서비스를 나누거나, server_name(도메인)으로 나누거나, 둘을 조합한다.

로드 밸런싱

리버스 프록시가 하는 일 중 하나. 여러 서버에 요청을 나눠준다.

upstream myapp {
    server localhost:3000;
    server localhost:3001;
    server localhost:3002;
}

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

기본 전략은 round-robin. least_conn, ip_hash 같은 옵션으로 바꿀 수 있다.

리버스 프록시 vs 로드 밸런싱

설명
리버스 프록시 요청을 대신 받아서 전달 (목적)
로드 밸런싱 여러 서버에 요청을 나눠줌 (방법)

로드 밸런싱은 리버스 프록시가 하는 일 중 하나. "리버스 프록시 ⊃ 로드 밸런싱" 관계.

언제 쓰나

  • 서버 여러 개 운영할 때 (로드 밸런싱)
  • 여러 서비스를 하나의 도메인으로 묶을 때
  • HTTPS를 Nginx에서 종료하고 내부는 HTTP로 둘 때
  • API-Gateway 앞단에서 TLS·정적 파일 처리

작은 프로젝트를 혼자 돌릴 땐 없어도 된다.

더 보기

sunshinemoon · 2026