"Proxy"는 한국어로 직역하면 "대리"라는 뜻을 가지며 말그대로 클라이언트와 서버 간의 중계(대리자) 역할을 하는 시스템이다. 클라이언트가 서버에 직접 요청을 보내는 대신, 프록시를 통해 요청을 전달하고, 서버의 응답도 프록시를 통해 클라이언트에게 전달된다. 이해하기 쉽게 중간 저장소의 역할을 한다고 생각해도 좋다.
일반적으로 Client(클라이언트)는 사용자(또는 프로그램)가 서버에 특정 작업을 요청하기 위해 사용하는 응용 프로그램이나 장치를 의미하고, Server(서버)는 클라이언트의 요청을 수락하고, 해당 요청을 처리하여 응답을 반환하는 프로그램 또는 하드웨어 시스템을 의미한다. 이러한 개념은 프로그램의 역할 측면에서 주로 이해되지만, 프록시(proxy)나 분산 시스템을 다룰 때는 Client와 Server에 대한 보다 깊은 개념적 이해가 필요하다.
Client와 Server는 고정된 개념이 아니라 상황에 따라 역할이 달라질 수 있다.
즉, 단순히 애플리케이션의 역할이 아니라 시스템 내부에서도 개별 Object들이 클라이언트와 서버 역할을 수행할 수 있다.
프록시는 단순히 "중간에서 전달만 한다"로 끝나는 게 아니라, 다양한 기능을 수행하면서 성능 최적화, 보안 강화, 서버 보호까지 담당할 수 있다.
1️⃣ 중계 (Request/Response Relay)
2️⃣ 접근 제어 (Access Control)
3️⃣ 캐싱 (Caching)
4️⃣ 로드 밸런싱 (Load Balancing)
실제로 자주 쓰이는 프록시의 종류는 다음과 같다.
1️⃣ 정방향 프록시 (Forward Proxy)
클라이언트가 서버에 직접 접근하지 않고 프록시가 대신 요청을 보내는 방식
주로 사용자가 IP를 숨기거나, 차단된 사이트에 우회 접근할 때 사용된다.
📍 흐름 : 클라이언트 → 정방향 프록시 → 서버
2️⃣ 리버스 프록시 (Reverse Proxy)
서버 앞단에 위치해서, 클라이언트 요청을 대신 받고 실제 서버로 전달하는 방식
서버 정보를 숨기고, 로드 밸런싱, 캐싱, 접근 제어 역할까지 담당한다.
📍 흐름 : 클라이언트 → 리버스 프록시 → 백엔드 서버
3️⃣ 투명 프록시 (Transparent Proxy)
사용자가 프록시를 쓰고 있다는 걸 모른 채 동작하는 방식
공공 와이파이, 회사, 학교에서 인터넷 사용을 통제하거나, 트래픽 모니터링에 자주 사용된다.
📍 흐름 : 클라이언트 → (알지 못하는 상태로) 투명 프록시 → 서버