리버스 프록시란? 포워드 프록시와의 차이, 목적, 사용 시나리오까지 한 번에 정리
1. 먼저, 프록시(Proxy)부터 짚고 가기
프록시 서버(proxy server)는 클라이언트와 서버 사이에 끼어 있는 “대리인 서버”입니다. 클라이언트가 직접 서버에 요청하는 대신, 프록시에게 요청을 보내면 프록시가 대신 서버와 통신하고 결과를 클라이언트에게 돌려줍니다.
이때, 프록시가 어느 쪽(클라이언트 쪽 / 서버 쪽)에 서 있느냐에 따라 이름과 역할이 달라집니다.
- 클라이언트 편에 서서 외부 인터넷에 나가는 요청을 대신 처리 → 포워드 프록시(Forward Proxy)
- 서버 편에 서서 외부에서 들어오는 요청을 대신 받아 처리 → 리버스 프록시(Reverse Proxy)
2. 포워드 프록시(Forward Proxy): 클라이언트 쪽 대리인
포워드 프록시는 보통 우리가 “프록시 서버”라고 들으면 떠올리는 그 개념입니다.
2.1 동작 구조
클라이언트 → 포워드 프록시 → 인터넷(여러 서버들)
- 클라이언트는 직접 인터넷으로 나가지 않고, 포워드 프록시에게 요청을 보냅니다.
- 포워드 프록시는 클라이언트 대신 외부 서버에 요청을 보내고, 응답을 받아 클라이언트에게 돌려줍니다.
2.2 주로 쓰이는 목적
-
클라이언트 IP 숨기기
-
외부 서버 입장에서는 프록시의 IP만 보이고, 실제 사용자의 IP는 보이지 않습니다.
-
접근 제어 / 필터링
-
회사나 학교에서 특정 사이트(예: 유튜브, SNS) 접속을 차단할 때 사용.
-
캐싱
-
자주 보는 외부 웹 페이지를 프록시에 캐싱해 네트워크 트래픽 절약 및 속도 향상.
-
로깅 및 모니터링
-
누가 어느 사이트에 얼마만큼 접속했는지 기록.
2.3 사용 예시
- 회사/학교의 사내 프록시 서버
- 특정 국가 차단 우회를 위한 웹 프록시
- 일부 VPN 서비스 (클라이언트의 트래픽을 대신 전달)
→ 정리하자면, 포워드 프록시는 “클라이언트가 외부로 나갈 때” 사용하는 프록시입니다.
3. 리버스 프록시(Reverse Proxy): 서버 쪽 대리인
리버스 프록시는 반대로 서버 입장에서 앞에 서 있는 프록시입니다. 클라이언트는 실제로는 리버스 프록시에 요청을 보내지만, 겉으로 보기엔 그냥 “서비스 주소”로 요청하는 것처럼 보입니다.
3.1 동작 구조
클라이언트 → 인터넷 → 리버스 프록시 → 내부 서버들(웹 서버, API 서버 등)
흐름을 단계별로 보면:
- 클라이언트가
https://example.com으로 요청을 보냅니다. - DNS가 가리키는 곳은 실제 웹 서버가 아니라 리버스 프록시입니다.
- 리버스 프록시는
- 로드 밸런싱,
- 인증/인가,
- 캐싱,
- 보안 검사(WAF) 등을 수행한 뒤 4. 내부에 있는 실제 서버(A, B, C 중 하나)에 요청을 전달합니다. 5. 내부 서버의 응답은 다시 리버스 프록시를 거쳐 클라이언트에게 전달됩니다.
3.2 왜 이름이 “Reverse” 인가?
포워드 프록시와 비교하면 방향성이 반대이기 때문입니다.
-
포워드 프록시
-
위치: 클라이언트 앞
- 흐름: 클라이언트 → 포워드 프록시 → 외부 서버
-
리버스 프록시
-
위치: 서버 앞
- 흐름: 클라이언트(외부) → 리버스 프록시 → 내부 서버
즉, “클라이언트 입장에서 나갈 때 거치는 프록시”와 “서버 입장에서 들어오는 요청을 대신 받는 프록시”라는 점에서 역방향(Reverse)이라는 이름이 붙었습니다.
4. 포워드 vs 리버스 프록시 한눈에 비교
| 구분 | 포워드 프록시 (Forward Proxy) | 리버스 프록시 (Reverse Proxy) |
|---|---|---|
| 위치 | 클라이언트와 인터넷 사이 | 인터넷(클라이언트)와 내부 서버 사이 |
| 주 관심사 | 클라이언트 보호 / 통제 | 서버 보호 / 운영 최적화 |
| 주요 목적 | IP 숨김, 접근 제한, 필터링, 캐싱 | 로드 밸런싱, SSL 종료, 보안, 캐싱, URL 라우팅 |
| 보안 관점 | 클라이언트가 외부에 나갈 때 내부를 보호 | 내부 서버를 외부로부터 숨기고 필터링 |
| 주 사용자 | 회사/학교 IT, 일반 사용자 | 서비스 운영자, 백엔드/인프라 엔지니어 |
| 대표 예시 | 사내 프록시, 웹 필터링 프록시, 일부 VPN | Nginx, HAProxy, AWS ALB, Cloudflare, Akamai 등 |
5. 리버스 프록시가 하는 일들 (주요 기능)
이제 리버스 프록시를 왜 쓰는지, 구체적인 기능별로 살펴보겠습니다.
5.1 로드 밸런싱 (Load Balancing)
문제 상황
- 서비스 트래픽이 많아 웹 서버 1대로 감당이 안 됨.
- 같은 기능을 하는 웹 서버를 여러 대 띄워야 함.
리버스 프록시의 역할
- 리버스 프록시가 들어오는 요청을 받아 여러 서버에 분산해서 전달.
- 예: Round Robin, Least Connections 등 다양한 방식으로 트래픽 분산.
- 서버 중 일부가 죽어도 헬스 체크를 통해 해당 서버로는 트래픽을 보내지 않게 구성 가능.
사용 예
- Nginx 또는 HAProxy를 로드 밸런서로 두고, 뒤에 여러 대의 애플리케이션 서버를 둔 구조.
- AWS ALB(Application Load Balancer) 같은 클라우드 로드 밸런서.
5.2 SSL/TLS 종료 (SSL Offloading)
문제 상황
- 모든 웹 서버가 HTTPS(SSL/TLS) 처리를 직접 하면 CPU 부하가 큼.
- 인증서 관리도 서버 개수만큼 번거로움.
리버스 프록시의 역할
- 리버스 프록시에서 HTTPS를 종료(복호화)하고,
- 내부 서버에는 HTTP로 전달하거나, 내부용 TLS를 별도로 사용할 수도 있음.
- 인증서도 리버스 프록시에서만 관리하면 되니 훨씬 간단.
사용 예
https://example.com트래픽을 Nginx 리버스 프록시에서 종료하고, 뒤쪽 애플리케이션 서버는http://app1:8080,http://app2:8080으로 통신.
5.3 보안 (WAF, 방화벽, 서버 은닉)
문제 상황
- 웹 애플리케이션이 SQL Injection, XSS, DDoS 등의 공격에 노출.
- 내부 구조(서버 IP, 포트 등)를 외부에 숨기고 싶음.
리버스 프록시의 역할
- WAF(Web Application Firewall) 기능으로 악의적인 요청 필터링.
- 허용된 경로나 메서드만 통과시키고, 나머지는 차단 가능.
- 내부 서버는 사설 네트워크에만 존재하고, 외부에서는 오직 리버스 프록시만 보이게 구성.
5.4 캐싱 (Caching)
문제 상황
- 정적 콘텐츠(이미지, CSS, JS 등)에 대한 요청이 매우 많음.
- 매번 애플리케이션 서버까지 가는 게 비효율적.
리버스 프록시의 역할
- 정적 파일을 프록시 레벨에서 캐싱하여 바로 응답.
- 백엔드 서버 부하 감소 + 응답 속도 향상.
- CDN(Cloudflare, Akamai 등)도 넓은 의미로 리버스 프록시 + 캐싱 구조.
5.5 URL 라우팅 / API Gateway 역할
문제 상황
- 하나의 도메인에서 여러 서비스를 운영 (예: 웹, API, 관리자 페이지 등).
- 마이크로서비스 아키텍처로 백엔드가 여러 개로 쪼개져 있음.
리버스 프록시의 역할
-
도메인 또는 경로에 따라 다른 서버로 라우팅:
-
/api→ API 서버 /admin→ 관리자 서버/static→ 정적 파일 서버- API Gateway로서 인증/인가, 라우팅, rate limiting 등을 중앙에서 처리.
예
https://example.com/ → web-frontend 서비스
https://example.com/api/ → api-gateway 서비스
https://example.com/admin/ → admin-backend 서비스
6. 언제 어떤 프록시를 쓸까?
6.1 포워드 프록시가 필요한 상황
- 회사에서 직원들이 접속하는 웹 사이트를 통제/감시해야 할 때
- 학교, 공공기관 등에서 특정 사이트를 차단하고 싶을 때
- 내부 사용자들의 출구(Outbound) 트래픽을 한 곳으로 모으고 싶을 때
- IP를 숨기고 외부와 통신하고 싶은 클라이언트 측 요구가 있을 때
→ 키워드: 클라이언트 보호, 사용자의 인터넷 사용 관리/제어
6.2 리버스 프록시가 필요한 상황
- 웹 서비스 트래픽이 늘어나 여러 대의 서버에 로드 밸런싱이 필요할 때
- HTTPS 인증서를 중앙에서 관리하고 싶을 때 (SSL 종료)
- 내부 서버를 외부에 직접 노출하지 않고 보안 계층을 추가하고 싶을 때
- 정적 리소스 캐싱으로 성능과 응답 속도를 끌어올리고 싶을 때
- 하나의 도메인에서 여러 백엔드 서비스로 라우팅하고 싶을 때
- 마이크로서비스 아키텍처에서 API Gateway/Edge Proxy가 필요할 때
→ 키워드: 서버 보호, 서비스 확장성, 운영 편의성, 성능 최적화
7. 정리
- 프록시 서버는 클라이언트와 서버 사이에서 대신 통신하는 “대리인 서버”이다.
-
포워드 프록시(Forward Proxy)
-
클라이언트 쪽에 위치
- 클라이언트가 외부로 나갈 때 대신 요청
- 주 목적: 클라이언트 IP 숨김, 접근 제어, 필터링, 캐싱
-
리버스 프록시(Reverse Proxy)
-
서버 쪽에 위치
- 외부에서 들어오는 요청을 대신 받아 내부 서버로 전달
- 주 목적: 로드 밸런싱, SSL 종료, 보안(WAF), 캐싱, URL 라우팅 및 API Gateway 역할
- 실제 서비스 운영 관점에서는 리버스 프록시가 서버 앞단 인프라의 핵심 구성 요소로 사용되며, Nginx, HAProxy, AWS ALB, Cloudflare, Akamai 등이 대표적인 예입니다.

댓글이 없습니다.