1. 프록시(Proxy)란?
-> 서버 ↔ 클라이언트 대리인 역할
- 정의: 클라이언트와 서버 사이에서 중간자 역할을 하는 서버 또는 서비스
- 클라이언트는 직접 서버와 통신하지 않고, 프록시를 통해 요청을 전달하고 응답을 받음
2. 프록시 서버의 주요 기능
1. 보안 강화
- 내부 네트워크 보호
기업이나 기관은 내부 네트워크 IP를 외부에 직접 노출하지 않고, 프록시 서버를 통해 간접적으로 통신함
외부에서 직접 내부 서버에 접근하지 못하게 함으로써 해킹위험을 줄임
- 트래픽 모니터링 및 기록
관리자 입장에서 누가 언제 어떤 사이트를 접속했는지를 로깅할 수 있어, 보안 사고 발생 시 추적이 가능함
2. 익명성 및 IP 우회
- 사용자 IP 숨김
사용자의 실제 IP를 숨기고, 프록시 서버의 IP로 대체해서 외부에 노출하지 않음
- 지역 제한 콘텐츠 우회
특정 국가에서만 접속 가능한 웹사이트/서비스를 해당 국가에 위치한 프록시 서버를 통해 우회 가능
3. 접근 제어 및 정책 관리
- 특정 사이트 차단
회사나 학교에서 특정 웹 사이트를 프록시를 통해 차단
- 사용자별 정책 적용
사용자, 부서, 시간대에 따라 접속 권한이나 대역폭 제한을 다르게 설정할 수 있음
4. 속도 향상 및 대역폭 절약
- 캐싱 기능
자주 접속하는 사이트나 파일을 프록시 서버에 캐시하여 다음 요청 시 더 빠르게 응답할 수 있음
- 대역폭 절약
캐싱을 통해 불필요한 외부 트래픽을 줄임으로써 인터넷 회선을 보다 효율적으로 사용하게 됨
5. 부하 분산 및 가용성 향상 (Reverse Proxy)
- 서버 앞단에서 요청 분산
많은 사용자가 동시에 요청할 경우, 프록시 서버가 요청을 여러 백엔드 서버에 분산해서 처리
- 장애 대응
서버가 다운되면, 프록시 서버가 자동으로 다른 서버로 요청을 넘기거나 오류 메세지를 처리하여 사용자 경험 향상
2. 프록시의 종류

| 구분 | 위치 | 주요 목적 | 예시 |
|---|
| Forward Proxy | 클라이언트 앞단 | 클라이언트 보호, 캐싱, 접근 제어 | 회사 내부망, 검열 우회 |
| Reverse Proxy | 서버 앞단 | 서버 보호, 로드밸런싱, SSL 처리, 캐싱 | NGINX, HAProxy, CDN |
[+] 오픈 프록시 (Open Proxy)
누구나 사용할 수 있는 공개된 프록시 서버
익명성은 제공하지만, 보안 위험이 큼
(1) Forward Proxy (정방향 프록시)
- 클라이언트 앞단에 위치
- 클라이언트가 인터넷에 직접 접근하지 않고, 프록시가 대신 요청
- 주요 목적:
- 캐싱(자주 요청되는 리소스를 저장해 빠른 응답 제공)
- 접근 제어(특정 사이트 차단, 사내망 관리)
- 익명성 제공(클라이언트의 IP를 서버에 숨김)
[e.g.] 회사 내부 PC → Forward Proxy → 외부 인터넷
(2) Reverse Proxy (역방향 프록시)
- 서버 앞단에 위치
- 클라이언트는 서버에 직접 요청하는 줄 알지만, 실제로는 프록시가 요청을 받아 서버로 전달
- L7(애플리케이션 레벨) 로드 밸런서는 사실상 리버스 프록시 기능을 포함
- 클라이언트는 LB가 서버인 것처럼 요청
- LB가 요청을 분석하고, 적절한 서버로 전달
- SSL 종료, HTTP 헤더 수정, 캐싱 등 가능
- 리버스 프록시만 단독으로 두면 트래픽 분산 없이 요청을 특정 서버로 전달만 함
- 주요 목적:
- 로드밸런싱 (여러 서버에 요청 분산)
- SSL 종료(HTTPS 암호화 처리)
- 보안 강화(서버의 실제 IP 숨기기, 방화벽 역할)
- 캐싱을 통해 서버 부하 경감
- 리버스 프록시는 트래픽 중계 / 보안 중심
로드 밸런서는 서버 간 부하 분산 중심
L7 LB는 리버스 프록시 역할 포함
[e.g.] Nginx, HAProxy
3.LB & Proxy
| 항목 | 리버스 프록시 | 로드 밸런서 |
|---|
| 🛡️ 보안 강화 | 클라이언트와 백엔드 서버 사이의 완충 지대 역할 | 기본적으로 보안 목적은 아님 (WAF와 함께 쓰이면 가능) |
| ⚡ 캐싱 지원 | 정적 콘텐츠를 캐시하여 빠른 응답 제공 | 일반적으로 캐싱은 하지 않음 |
| 🔐 SSL 종료 | SSL을 프록시에서 종료(복호화)하고, 내부는 HTTP 통신 가능 | SSL 종료 기능 포함 가능 (종류에 따라 다름) |
| ↪️ 트래픽 분기 | 요청 URL/도메인에 따라 다른 백엔드로 라우팅 가능 (예: api.example.com vs www.example.com) | 보통은 단순한 부하 분산 (URL별 라우팅은 일부 지원) |
| ⚖️ 부하 분산 | 기본 목적은 아님, 단 일부 구현체는 분산 기능 포함 | 트래픽을 서버들에 분산 (Round-robin, Least connection 등) |
| 👁️🗨️ 클라이언트 IP 표시 | 기본적으로 클라이언트 IP 숨김, X-Forwarded-For 헤더로 전달 가능 | 마찬가지로 원 IP 숨겨짐, 헤더 전달 필요 |
[클라이언트] -- [ 포워드 프록시 ] — [ LB / 리버스 프록시] — [서버]
리버스 프록시
: 클라이언트 요청을 받아 백엔드 서버로 전달하고 응답을 다시 클라이언트에 전달하는 중간 서버
- 목적 : 보안, 캐싱, SSL 처리, 응답 속도 향상 등
로드 밸런서
: 클라이언트 요청을 여러 서버에 분산시켜 처리하는 장치 또는 서비스
- 목적: 서버 부하 분산, 고가용성 확보, 성능 향상
클라이언트 → 로드 밸런서 → 리버스 프록시 → 백엔드 서버
| 항목 | 리버스 프록시 | 로드 밸런서 |
|---|
| 주 역할 | 클라이언트와 서버 사이 중계 | 요청을 여러 서버로 분산 |
| 주 목적 | 보안, 프록싱, 캐싱 등 | 부하 분산, 장애 대응 |
| 서버 수 | 1개 이상 가능 (하지만 1개여도 OK) | 보통 여러 서버 필요 |
| 예시 | Nginx, Apache (as reverse proxy) | AWS ELB, HAProxy, Nginx (as load balancer) |