내 잡다한 노트
포워드 프록시와 리버스 프록시의 차이와 활용 본문
프록시(Forward Proxy)와 리버스 프록시(Reverse Proxy)는 모두 "프록시"라는 개념을 공유하지만, 트래픽의 흐름 방향 및 주체, 활용 목적에 따라 크게 구분됩니다.
1. 프록시(Forward Proxy)
개념:
프록시는 클라이언트가 인터넷 리소스(웹 서버, API 등)에 접근할 때, 중간에 위치하여 클라이언트의 요청을 대신 전달하고 응답을 받아 전달해주는 중개자 역할을 합니다. 주로 클라이언트 측에 가까이 위치하며, 클라이언트는 프록시를 통해 외부 서버에 접근합니다.
동작 방식:
- 클라이언트(예: PC, 서버)는 직접 외부 서버로 접속하지 않고, 프록시 서버로 요청을 보냅니다.
- 프록시 서버는 클라이언트를 대신해 외부 서버에 요청을 보내고, 응답을 수신합니다.
- 프록시 서버는 받은 응답을 다시 클라이언트에게 전달합니다.
특징:
- 클라이언트 중심: 클라이언트가 외부 리소스에 접근할 때 프록시를 직접 지정하고 사용해야 합니다.
- 네트워크 정책/보안/접근 제어: 특정 사이트 접근 차단, 내부망에서 해외망 접속 제어, 로깅, 인증, 캐싱 등의 용도로 사용합니다.
- 익명성 제공: 클라이언트 IP를 숨기고 외부 서버에는 프록시 서버의 IP만 보여줍니다.
- 예시: 기업 사내망에서 외부 인터넷 접근 시 필수 프록시 사용, HTTP/HTTPS 프록시(Squid, Tinyproxy), SOCKS 프록시 등.
활용 시나리오:
- 기업 내부망 정책 관리:
- 회사 내부 직원들이 외부 인터넷 사이트에 접근할 때, 특정 사이트는 차단하거나 접근 시간을 제한할 수 있습니다.
- 접속 기록을 모두 프록시에 남겨, 사내 보안 정책 준수 여부를 확인하거나, 데이터 유출 대응에 활용할 수 있습니다.
- 대역폭 및 비용 절감:
- 빈번하게 접근하는 외부 웹 콘텐츠를 프록시 서버 캐시에 저장해두면, 다음 요청 시 외부로 재요청할 필요가 없어 인터넷 회선 사용량을 줄일 수 있습니다.
- 해외 서버 접근 시 프록시 캐싱을 통해 국제 회선 부담을 완화하고, 이용 비용과 레이턴시를 줄일 수 있습니다.
- 검열 우회:
- 국가나 지역 정책으로 특정 사이트에 접근이 차단된 경우, 외부 지역에 있는 프록시 서버를 통해 접속해 검열을 우회할 수 있습니다.
- 이를 통해 전 세계 어디서든 동일한 리소스에 접근하는 편의성을 얻을 수 있습니다. (물론 법적/정책적 제약을 고려해야 함)
- 개인 사생활 보호:
- 개인 사용자가 자신의 IP를 노출하지 않고 웹 리소스에 접근하기 위해 프록시를 사용합니다.
- 특정 지역에 국한된 콘텐츠(예: 지역 제한 스트리밍 서비스)에 접근하기 위해 그 지역에 위치한 프록시를 활용할 수도 있습니다.
- 개발 및 테스트 환경 지원:
- 개발자가 로컬 네트워크 상에서 외부 API를 테스트할 때, 프록시를 통해 요청 흐름을 모니터링하거나 특정 응답을 캐싱해놓고 반복 테스트를 쉽게 할 수 있습니다.
- QA나 테스트 팀은 프록시 로깅을 통해 요청/응답 패턴을 쉽게 분석하고 문제점을 파악합니다.
2. 리버스 프록시(Reverse Proxy)
개념:
리버스 프록시는 서버 측(서비스 제공자 측)에 가까이 위치하며, 외부 클라이언트로부터 들어오는 요청을 대신 받아 실제 서버(원서버)로 전달하고, 응답을 받아 클라이언트에게 반환하는 역할을 합니다. 즉, 외부에서 볼 때 리버스 프록시는 해당 서비스의 "대문" 역할을 하며, 클라이언트는 실제 서버의 존재를 모른 채 리버스 프록시를 통해 서비스에 접근하게 됩니다.
동작 방식:
- 클라이언트는 특정 도메인(예: example.com)으로 요청을 보냅니다.
- DNS 설정으로 인해 이 도메인은 리버스 프록시 서버의 IP로 해석됩니다.
- 리버스 프록시 서버는 들어온 요청을 내부 로드밸런싱 정책이나 라우팅 규칙에 따라 백엔드 서버(실제 서비스 서버)로 전달합니다.
- 백엔드 서버의 응답을 다시 리버스 프록시가 받아 클라이언트에게 반환합니다.
특징:
- 서버 중심: 클라이언트는 프록시 사용을 명시적으로 설정하지 않아도 되고, 단순히 도메인에 요청을 보내면 됩니다.
- 로드 밸런싱, SSL 종단, 캐싱, 접근 제어: 리버스 프록시를 통해 여러 백엔드 서버로 트래픽을 분산하거나, SSL 인증서 관리를 중앙화하고, 정적 콘텐츠를 캐싱하여 성능을 개선할 수 있습니다.
- 보안 강화: 실제 서버 IP를 외부에 노출하지 않고, 방화벽 내부에서 서버를 보호할 수 있습니다.
- 예시: Nginx, HAProxy, Apache httpd, Traefik 등을 리버스 프록시로 구성. CDNs(Content Delivery Network)나 클라우드 로드 밸런서를 생각할 수 있습니다.
활용 시나리오:
- 멀티 서버 로드 밸런싱:
- 대규모 웹 서비스에서 리버스 프록시는 다수의 백엔드 서버로 요청을 분산하여 단일 서버 과부하를 방지합니다.
- 백엔드 서버 장애 시 리버스 프록시가 자동으로 장애 서버를 제외하고 다른 서버로 트래픽을 유도, 서비스 안정성을 높입니다.
- SSL 종단 처리(Offloading):
- 리버스 프록시가 HTTPS 트래픽을 받아 SSL 복호화를 수행한 뒤, 내부망에서는 HTTP로 백엔드와 통신함으로써 백엔드 서버의 SSL 처리 부담을 줄입니다.
- 인증서 관리와 갱신 작업을 리버스 프록시 한 곳에서 중앙 관리할 수 있어 운영 편의성을 향상시킵니다.
- 콘텐츠 캐싱 및 정적 파일 제공:
- 정적 파일(이미지, CSS, JavaScript)을 리버스 프록시에서 캐싱하면, 백엔드 서버는 동적 요청 처리에만 집중할 수 있어 성능이 향상됩니다.
- 사용자가 자주 요청하는 콘텐츠를 미리 캐싱해 응답 속도를 개선하고, 외부 대역폭 소모를 줄입니다.
- 보안 게이트웨이 구현:
- WAF(Web Application Firewall) 기능을 리버스 프록시에 통합하면, 백엔드 서버 앞단에서 SQL Injection, XSS, L7 DDoS 같은 공격을 차단할 수 있습니다.
- 백엔드 서버의 실제 IP나 구조를 숨기고, 외부에는 리버스 프록시의 IP만 노출해 보안성을 강화합니다.
- 이관 및 유지보수 유연성 확보:
- 백엔드 서버 마이그레이션, 유지보수 시 외부 클라이언트는 리버스 프록시로만 접속하므로 도메인 변경 없이 백엔드 서버를 교체할 수 있습니다.
- 장애 대응 시 백엔드 서버를 실시간으로 교체하거나 재배치해도 클라이언트 측에는 서비스 중단이나 변경이 최소화됩니다.
- A/B 테스트 및 Canary 배포:
- 리버스 프록시가 들어오는 요청 일부를 신규 버전 서버로 라우팅하여 서비스 변경을 점진적으로 테스트할 수 있습니다.
- 트래픽 스플릿을 제어해 새로운 기능, UI, 성능 변화를 쉽게 테스트하고 모니터링할 수 있습니다.
프록시 서버에도 동작 방식에 따라서 크게 4가지 유형이 있다.
레벨
|
명칭
|
설명
|
1
|
High Anonymity Proxy(또는 Elite)
|
HTTP 헤더에 프록시 정보를 아예 넣지않아 프록시를 사용하지 않는 것과 동일하게 동작한다. 따라서 서버에서는 프록시 사용유무를 알 수 없다.
|
2
|
Distorting Proxy
|
HTTP 헤더의 HTTP_VIA 영역에는 자신의 IP, HTTP_X_FORWARD_FOR 영역에는 랜덤으로 생성된 값을 박아서 자신이 프록시임을 알린다. 원래 IP는 제공되지 않는다.
|
Simple Annonymous Proxy
|
HTTP 헤더의 HTTP_VIA, HTTP_X_FORWARD_FOR 영역에 자신의 IP를 박아서 자신이 프록시임을 알린다. 원래 IP는 제공되지 않는다.
|
|
3
|
Transparent Proxy
|
HTTP 헤더의 HTTP_VIA, HTTP_X_FORWARD_FOR 영역에 원래 IP를 박는다.
|
그외에 개인이 수정한 유형이 있긴 한데 전체적으로 저 넷에서 크게 벗어나지는 않는다. 그리고 프록시 레벨이 낮아질수록 유료로 서비스를 제공하는 경우가 많다. 유료인 만큼 다른 공개된 무료 프록시 서버에 비해 신뢰성이 보장된다.
정리
- 프록시(Forward Proxy): 클라이언트가 외부로 나가는 요청을 대리 수행.
- 클라이언트 측에 주로 설정
- 내부망 사용자 인터넷 접근 제어, 트래픽 모니터링, 접근 필터링, 익명성 확보, 우회 접속에 유용
- 리버스 프록시(Reverse Proxy): 외부에서 들어오는 요청을 대신 받아 내부 서버로 전달.
- 서버/서비스 제공자 측에 위치
- 로드 밸런싱, SSL 처리, 캐싱, 보안 강화, 서버 IP 노출 방지, 인프라 유연성 향상에 유용
'네트워크' 카테고리의 다른 글
NAT Loopback 문제. 공유기 트러블슈팅(추후 수정) (0) | 2024.03.31 |
---|---|
웹 쿼리 매개변수 (0) | 2023.11.18 |
VPN(Virtual Private Network) (0) | 2023.11.08 |
FTP(File Transfer Protocol) (0) | 2023.10.06 |
쿠키와 세션 (0) | 2023.09.07 |