프록시 — Forward Proxy, Reverse Proxy, SOCKS
프록시는 클라이언트와 서버 사이에서 중개 역할을 합니다. Forward Proxy와 Reverse Proxy는 "누구를 대리하느냐"가 다릅니다.
Forward Proxy
클라이언트를 대리 하여 서버에 요청합니다. 서버는 실제 클라이언트를 모릅니다.
클라이언트 → [Forward Proxy] → 인터넷 → 서버
서버가 보는 것: 프록시의 IP (클라이언트 IP는 모름)
용도:
- 접근 제어 (회사에서 특정 사이트 차단)
- 캐싱 (자주 접근하는 컨텐츠 캐싱)
- 우회 접속 (IP 변경)
Reverse Proxy
서버를 대리 하여 클라이언트 요청을 받습니다. 클라이언트는 실제 서버를 모릅니다.
클라이언트 → 인터넷 → [Reverse Proxy] → 서버 A
→ 서버 B
→ 서버 C
클라이언트가 보는 것: 프록시의 주소 (실제 서버 주소는 모름)
용도:
- 로드 밸런싱: 여러 백엔드 서버에 요청 분배
- SSL 종료: 프록시에서 HTTPS 처리, 백엔드는 HTTP
- 캐싱: 정적 자원 캐싱
- 보안: 서버 IP 은닉, WAF 기능
대표: Nginx, HAProxy, AWS ALB/NLB
Forward vs Reverse 비교
| 항목 | Forward Proxy | Reverse Proxy |
|---|---|---|
| 대리 대상 | 클라이언트 | 서버 |
| 설정 주체 | 클라이언트 | 서버 관리자 |
| 숨기는 것 | 클라이언트 IP | 서버 IP/구조 |
| 예시 | Squid, VPN | Nginx, HAProxy |
SOCKS 프록시
HTTP뿐 아니라 모든 TCP/UDP 트래픽 을 프록시합니다.
SOCKS4: TCP만 지원
SOCKS5: TCP + UDP + 인증 지원
SSH 터널링이 SOCKS5 프록시로 동작합니다:
ssh -D 1080 user@server
# 브라우저에서 SOCKS5 프록시: localhost:1080 설정
핵심 포인트
- Nginx가 Reverse Proxy인 이유: 클라이언트 요청을 받아 백엔드 서버로 전달
- CDN은 일종의 Reverse Proxy: 엣지 서버가 원본 서버를 대리
- X-Forwarded-For 헤더: 프록시를 거치면 원래 클라이언트 IP가 손실 → 이 헤더로 전달
정리
프록시는 네트워크 아키텍처의 핵심 구성 요소입니다. Forward는 클라이언트를, Reverse는 서버를 대리하며, Reverse Proxy(Nginx, HAProxy)는 현대 웹 서비스의 필수 구성입니다.