"프록시"와 "리버스 프록시"는 이름이 비슷해 헷갈리지만, 핵심은 한 문장으로 갈립니다. 누구를 대신하느냐입니다. 포워드 프록시는 클라이언트를 대신하고, 리버스 프록시는 서버를 대신합니다.
포워드 프록시 — 클라이언트 쪽에 선다
포워드 프록시(흔히 그냥 "프록시")는 클라이언트 무리 앞에 서서 그들의 요청을 대신 내보냅니다. 서버 입장에서는 누가 진짜 요청자인지 보이지 않고 프록시만 보입니다.
- 사내망에서 외부로 나가는 트래픽을 한 지점으로 모음
- 접근 통제·필터링(특정 사이트 차단)
- 클라이언트 IP를 숨김
로컬 또는 서버
# 클라이언트가 프록시를 거쳐 나가도록 지정
curl -x http://proxy.internal:3128 https://example.com
리버스 프록시 — 서버 쪽에 선다
리버스 프록시는 서버 무리 앞에 서서 외부 요청을 받아 뒤의 실제 서버로 넘깁니다. 클라이언트는 뒤에 서버가 몇 대인지, 어떤 주소인지 알지 못한 채 리버스 프록시 하나만 봅니다. Nginx, HAProxy, 그리고 이 플랫폼이 쓰는 API Gateway가 대표적입니다.
- 부하 분산(여러 백엔드로 요청 분배)
- TLS 종료(인증서를 한 곳에서 처리)
- 캐싱·압축·요청 라우팅
- 백엔드 주소·구조를 외부로부터 숨김
로컬 또는 서버
# 리버스 프록시가 응답하는지, 어느 백엔드로 갔는지 헤더로 확인
curl -I https://api.example.com/health
한눈에 비교
| 구분 | 포워드 프록시 | 리버스 프록시 |
|---|---|---|
| 대신하는 대상 | 클라이언트 | 서버 |
| 어디에 위치 | 클라이언트망 출구 | 서버망 입구 |
| 숨기는 것 | 클라이언트 IP | 백엔드 구조 |
| 누가 설정 | 클라이언트가 프록시 지정 | 서버 운영자가 배치 |
| 대표 용도 | 사내 출구 통제·필터링 | 부하분산·TLS 종료·라우팅 |
같은 "중계자"지만 선 위치가 정반대입니다. 클라이언트가 자기 요청을 대신 보내달라고 명시적으로 프록시를 지정하면 포워드, 클라이언트가 모르는 사이 서버 앞에서 받아넘기면 리버스입니다.
실무에서는 언제 무엇을
번호로 정리하면 판단이 쉽습니다.
- 외부 서비스를 여러 대로 운영하며 한 진입점으로 받고 싶다 → 리버스 프록시
- TLS 인증서를 한 곳에서만 관리하고 싶다 → 리버스 프록시(TLS 종료)
- 사내 PC들의 인터넷 접근을 통제·로깅하고 싶다 → 포워드 프록시
- 마이크로서비스 앞에서 인증·라우팅을 모으고 싶다 → 리버스 프록시(API Gateway)
체크리스트
로컬 또는 서버
curl -x http://proxy:3128 <URL> # 포워드 프록시 경유 테스트
curl -I https://api.example.com # 리버스 프록시 응답 헤더 확인
ss -tlnp | grep -E ':80|:443' # 프록시가 듣는 포트 확인
포워드·리버스 프록시를 직접 세워보고 트래픽 흐름을 관찰하는 실습은 네트워크 트랙에서 회원가입 없이 무료로 해볼 수 있습니다.