Written by Google Gemini 2.5 Pro
📌 1. 프록시(Proxy)의 기본 개념
프록시(Proxy)
는 '대리인'이라는 뜻으로, 클라이언트와 서버 사이에서 통신을 중개하는 시스템이다.
- 요청을 보내는 주체(클라이언트)나 요청을 받는 주체(서버)를 대신하여 통신을 수행하며, 이 과정에서 보안, 성능, 익명성을 향상시키는 다양한 부가 기능을 제공한다.
- 누구를 '대리'하고, 통신의 어떤 방향을 중개하느냐에 따라
포워드 프록시
와 리버스 프록시
로 명확히 구분된다.
📌 2. 포워드 프록시: '클라이언트'를 위한 대리인

- 포워드 프록시는 내부 네트워크의
클라이언트
가 외부 인터넷에 접속할 때 거쳐가는 대리인이다.
- 모든 요청이 이 프록시를 통해 나가므로, 외부 서버는 실제 클라이언트가 아닌 포워드 프록시의 IP를 보게 된다.
ex) 해외 직구를 대신해 주는 구매 대행 업체. 상점(외부 서버)은 실제 구매자(클라이언트)가 누구인지 모르고, 구매 대행 업체와만 거래하게 된다.
가. 구체적인 사용 사례
1. 기업 및 학교 내부망 보안
- 사내 직원이나 학생들이 특정 웹사이트(유해 사이트, 소셜 미디어 등)에 접속하는 것을 막는 URL 필터링 기능을 수행한다.
- 또한, 모든 외부 통신이 포워드 프록시를 거치므로 트래픽을 모니터링하고 악성코드를 검사하는 보안 관문 역할을 한다.
2. 캐싱(Caching)을 통한 속도 개선
- 내부 사용자들이 자주 요청하는 콘텐츠(예: 윈도우 업데이트 파일, 대용량 라이브러리)를 프록시 서버에 저장(캐싱)해 둔다.
- 이후 다른 사용자가 동일한 콘텐츠를 요청하면, 인터넷까지 나가지 않고 프록시 서버가 즉시 응답하여 네트워크 대역폭을 절약하고 속도를 높인다.
3. IP 익명성 확보 및 우회 접속
- 클라이언트의 실제 IP를 숨기고 프록시 서버의 IP로 외부와 통신하므로 익명성을 보장받을 수 있다. 많은 VPN 서비스가 이러한 원리를 활용하며, 특정 국가에서 차단된 서비스에 접근하기 위한 우회 경로로도 사용된다.
📌 3. 리버스 프록시: '서버'를 위한 대리인

- 리버스 프록시는 인터넷의 불특정 다수 클라이언트가 내부 서버로 접속할 때 거쳐가는 대리인이다.
- 모든 요청이 리버스 프록시에 먼저 도달하므로, 클라이언트는 자신이 통신하는 서버가 실제 서버인지 프록시인지 알 수 없다.
ex) 대형 병원의 대표 번호 및 안내 데스크. 환자(클라이언트)는 대표 번호로만 전화하면, 안내 데스크가 환자의 증상에 맞춰 최적의 진료과(내부 서버)로 연결해 준다.
가. 구체적인 사용 사례
1. 로드 밸런싱 (부하 분산)
- 리버스 프록시의 가장 핵심적인 역할
- 하나의 서비스에 대해 여러 대의 웹 서버(WAS)를 운영할 때, 리버스 프록시가 요청을 받아 가장 부하가 적거나 순서에 맞는 서버로 요청을 분배하여 서버 과부하를 방지한다.
2. 무중단 배포 (Blue-Green Deployment)
- 신규 버전(Green)의 서버들을 준비시킨 후, 리버스 프록시(Nginx) 설정 변경 한 줄만으로 기존 버전(Blue)으로 가던 트래픽을 신규 버전으로 즉시 전환할 수 있다.
- 이를 통해 서비스 중단 없이 안전하게 업데이트를 진행할 수 있다.
3. 보안 강화 (서버 정보 은닉 및 WAF)
- 실제 WAS의 IP 주소와 포트, 아키텍처를 외부에 완벽하게 숨겨서 직접적인 공격을 원천 차단한다.
- 또한 리버스 프록시 단에서 웹 방화벽(WAF) 기능을 추가하여 SQL Injection, XSS 같은 애플리케이션 레벨의 공격을 필터링할 수 있다.
4. 마이크로서비스 아키텍처(MSA)의 API Gateway
- 수많은 마이크로서비스들 앞에서 단일 진입점(Single Point of Entry) 역할을 수행한다.
- 모든 요청을 받아 인증/인가를 처리하고, 각 요청에 맞는 서비스로 라우팅하며, 사용량 제한(Rate Limiting) 등을 통합 관리한다.
📌 4. Nginx를 활용한 리버스 프록시 심층 분석
Nginx는 가볍고 빠르며, 안정성이 높아 리버스 프록시의 표준처럼 사용된다. Nginx가 제공하는 핵심 기능들은 다음과 같다.
가. 핵심 기능 1: 로드 밸런싱 알고리즘
Nginx는 upstream
블록을 통해 다양한 방식의 로드 밸런싱을 지원한다.
round_robin
(기본값): 서버 목록에 따라 순서대로 요청을 분배.
least_conn
: 현재 연결 수가 가장 적은 서버로 요청을 보냄.
ip_hash
: 클라이언트의 IP 주소를 해싱하여 특정 서버에만 연결을 고정. (세션 유지에 사용)
나. 핵심 기능 2: SSL/TLS Termination
- 클라이언트와 Nginx 사이의 구간은 안전한 HTTPS로 암호화 통신을 하고, Nginx와 내부 WAS 구간은 암호화 오버헤드가 없는 빠른 HTTP로 통신하는 방식이다.
- CPU를 많이 사용하는 암호화/복호화 작업을 Nginx가 전담하므로, WAS는 순수하게 비즈니스 로직 처리에만 집중하여 성능을 높일 수 있다.
다. 핵심 기능 3: 정적/동적 콘텐츠 분리 및 캐싱
- Nginx의
location
지시어를 활용하여, 이미지/CSS/JS와 같은 정적 콘텐츠 요청은 WAS까지 보내지 않고 Nginx가 직접 처리하거나 캐시에서 즉시 응답하도록 설정할 수 있다.
- 동적인 API 요청만 WAS로 전달하여 시스템의 전반적인 효율을 극대화한다.