Nginx 리버스 프록시 설정 기초 정리

여러 개의 애플리케이션 서버를 운영하다 보면 결국 하나의 진입점으로 트래픽을 모아 분배해야 할 필요가 생깁니다. 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;
    }
}

위 설정은 80번 포트로 들어온 요청을 내부 3000번 포트의 애플리케이션으로 전달합니다. proxy_set_header 지시어는 원본 요청 정보를 백엔드에 그대로 전달하기 위해 사용됩니다.

경로 기반 라우팅

하나의 도메인 아래에서 경로별로 서로 다른 서비스로 분기할 수도 있습니다.

  • /api/ → API 서버
  • /admin/ → 관리자 페이지
  • / → 프론트엔드 서버

타임아웃과 버퍼 설정

백엔드 응답이 느린 경우를 대비해 proxy_read_timeout, proxy_connect_timeout 값을 적절히 조정해야 합니다. 기본값은 비교적 짧기 때문에 무거운 작업을 처리하는 API라면 늘려주는 것이 좋습니다.

설정 검증과 재시작

설정을 변경한 후에는 반드시 nginx -t로 문법 오류를 검사한 다음 systemctl reload nginx로 무중단 반영하는 습관을 들이는 것이 안전합니다.