Forward Proxy와 Reverse Proxy
클라이언트 대리와 서버 대리
Forward Proxy는 클라이언트 대리, Reverse Proxy는 서버 대리. CORS는 브라우저가 막는 규칙이라 같은 도메인 프록시를 거치면 우회할 수 있다.
Proxy
개념
프록시는 클라이언트와 서버 사이의 중간 노드다. 둘 다 "요청을 대신 받아 전달한다"는 점은 같지만, 누구 편에 서느냐가 다르다.
- Forward Proxy — 클라이언트 앞에 위치, 클라이언트를 대리 ("내 대신 나가줘")
- Reverse Proxy — 서버 앞에 위치, 서버를 대리 ("내 대신 받아줘")
Forward Proxy: 클라이언트 → [Forward Proxy] → 서버
Reverse Proxy: 클라이언트 → [Reverse Proxy] → 서버
왜 구분하나
두 프록시는 생김새는 비슷한데 해결하는 문제가 다르다. Forward Proxy는 클라이언트의 익명성·우회·콘텐츠 필터링이 주 목적이고, Reverse Proxy는 서버 보호·로드밸런싱·TLS 종료가 주 목적이다. 이름을 섞어 쓰면 누가 누구 편인지 모르게 돼서 설계가 꼬인다.
Reverse Proxy 쓰는 이유
- 보안 — 백엔드를 직접 노출 안 함
- 인증/인가 중앙화 — 토큰 검증, 권한 체크를 한 곳에서
- 라우팅 —
/api/hr/*→ HR 서비스,/api/dmp/*→ DMP 서비스 - 공통 기능 — 로깅, Rate Limit, CORS, 헤더 정리
- 확장성 — 로드밸런싱, 캐시, 장애 격리
실제 사용 예시
- Forward Proxy — 회사 내부에서 외부 접속을 대행·필터링, Next.js dev 서버에서 CORS 해결
- Reverse Proxy — Nginx가 대표적. 앞단에서 TLS 종료하고 내부 서비스로 분배
CORS 해결에 프록시를 쓰는 이유
- CORS는 브라우저가 막는 규칙이지 서버가 막는 게 아님
- 브라우저 → 같은 도메인 프록시 서버로 요청 → CORS 안 걸림
- 프록시 서버 → 다른 도메인 서버로 요청 → 서버끼리는 CORS 없음
- 결국 브라우저 입장에선 "전부 같은 출처"로 보여서 CORS 우회가 됨
더 보기
- Nginx — Reverse Proxy의 대표 구현
- Upstream-Downstream-Hop — 프록시에서 흐름 방향을 가리키는 용어
- CORS — 브라우저의 Cross-Origin 차단 정책
- API-Gateway — Reverse Proxy + 인증/인가가 얹힌 확장 형태