지난 게시글에서, 웹 서버와 WAS에 대해 알아봤다.
이를 더 잘 이해하기 위해서는 Reverse Proxy 개념에 대해서 알아야한다.
이번 게시글에서는 프록시(Proxy) 서버란 무엇인지, 그리고 프록시 서버의 두가지 유형인 Forward Proxy / Reverse Proxy에 대해 알아보도록 하자.
프록시(Proxy)란?
프록시(Proxy)는 클라이언트와 서버 간의 통신을 중계하는 역할을 하는 서버나 소프트웨어이다.
클라이언트는 서버에게 직접 요청을 보내지 않고 프록시를 통해 요청을 보낸다.
프록시는 해당 요청을 대신 서버에 전달하여 응답을 받아 클라이언트에게 전송한다.
프록시 서버(Proxy Server)는 프록시의 기능을 수행하기 위해 사용되는 서버이다.
프록시 서버는 위치에 따라 포워드 프록시(Forward Proxy), 리버스 프록시(Reverse Proxy) 두 가지 유형으로 나뉜다.
포워드 프록시(Forward Proxy)
일반적으로 프록시라고 하면 포워드 프록시를 뜻한다.
프록시 서버는 클라이언트 바로 뒤에 놓여있다. 이 때, 인터넷보다 프록시 서버를 먼저 호출한다.
프록시 서버는 같은 내부망에 존재하는 클라이언트의 요청을 외부 네트워크(인터넷)로 중계한다.
사용자가 woowa-ash.com 에 연결하려고 하면, 사용자 PC가 직접 연결하는게 아니라 포워드 프록시 서버가 요청을 받아 woowa-ash.com 에 연결하여 그 결과를 클라이언트에게 전달(Forward)해준다.
이는 서버에게 클라이언트가 누군지 감추는 역할을 한다. (서버에서 받는 IP는 클라이언트의 IP가 아니라 프록시 서버의 IP이다.)
포워드 프록시의 특징 및 역할
포워드 프록시의 주요 역할로는 캐싱, 익명성, 액세스 제어가 있다.
캐싱
포워드 프록시는 웹 페이지나 이미지와 같이 자주 요청되는 컨텐츠를 캐싱한다.
클라이언트가 동일한 컨텐츠에 대해 다시 요청을 할 경우, 프록시는 원본 서버에 요청을 전달하는 대신 캐싱된 컨텐츠를 제공한다.
예를 들면, 10만명의 클라이언트가 woowa-ash.com 에 접근하려 하면, 본래 웹 서버는 동일한 절차를 10만회 중복해서 진행해야한다.
정적 데이터같은 경우엔 사용자 별로 응답이 달라지지 않기 때문에, 포워드 프록시를 활용해 프록시 내 캐싱된 페이지를 불러온다.
이를 통해 클라이언트의 입장에서는 빠르게 컨텐츠를 응답받을 수 있고, 서버의 입장에서는 불필요한 로드를 감소해 부하를 완화할 수 있다.
익명성
위에서도 언급했 듯, 서버에서 받는 IP는 클라이언트의 IP가 아니라 프록시 서버의 IP이다.
즉, 클라이언트의 IP주소와 신원을 숨길 수 있어 익명성과 개인 정보 보호를 제공한다.
액세스 제어
포워드 프록시는 액세스 제어 정책을 설정하여 특정 사이트나 콘텐츠에 대한 액세스를 제한할 수 있다.
이를 통해 조직이나 기관에서 인터넷 사용을 관리하거나 악성 콘텐츠를 필터링할 수 있다.
리버스 프록시 (Reverse Proxy)
인터넷망에 있는 클라이언트가 프록시 서버를 호출하여 내부망에 있는 서버를 호출하면 리버스 프록시이다.
즉, 리버스 프록시는 서버의 앞단에 위치하여 클라이언트 요청을 여러 대상 서버로 분산하여 전달하는 역할을 한다.
리버스 프록시의 특징 및 역할
포워드 프록시의 주요 역할로는 부하 분산, 보안, 캐싱, 애플리케이션 관리가 있다.
부하 분산(로드 밸런싱)
리버스 프록시 뒤에 여러개의 WAS를 둠으로써, 사용자의 요청을 분산할 수 있다.
엔드포인트(URL)마다 호출 서버를 설정할 수도 있어, 역할에 따라 서버의 트래픽을 분산할 수 있다.
보안
웹 서버의 직접적인 접근을 차단함으로써 보안을 강화한다.
웹 서버의 IP와 신원을 숨기고, 악성 공격으로부터 보호한다.
이 때, 클라이언트가 직접적으로 웹 서버의 IP를 알 수 없으므로, 보안이 다소 취약한 HTTP 프레임워크를 숨겨 이를 보호할 수 있다.
캐싱
리버스 프록시도 포워드 프록시와 마찬가지로 캐싱을 사용하여 자주 요청되는 컨텐츠를 저장하고 동일한 요청에 대해 캐싱된 응답을 제공할 수 있다.
애플리케이션 관리
여러 개의 서버나 어플리케이션을 하나의 도메인 아래에 통합할 수 있다.
즉, 다양한 어플리케이션을 단일 진입점에서 관리할 수 있으며, URL 라우팅, SSL 인증서 관리 등을 수행할 수 있다.
또한, 하나의 IP로 다수의 웹 서버를 동작시킬 수 있으므로 IPv4의 한정된 수량 및 가격적인 측면에서 이점이 있다.
포워드 - 리버스 는 역방향이다?
위 두 개념을 공부했을 때, 저는 '둘이 역 방향이라는데 결국 클라이언트 → 프록시서버 → 원본 서버 로 같은 방향 아닌가?’ 라는 생각이 있었다.
하지만 잘 정리된 블로그를 보고 개념이 정리가 되었고, 해당 내용을 공유하고 싶다.
설명하기에 앞서 프록시 서버의 주된 역할은 웹 서버의 로드 감소임을 다시 한 번 강조하겠다.
포워드 프록시는 Front-end 방향으로 데이터를 밀어내는 역할을 수행한다.
기존 서버 앞단에 위치해, 정적 데이터를 캐싱해 웹 서버 대신 제공하는 것이 포워드 프록시의 주요 역할이다.
리버스 프록시는 Back-end 방향으로 요청을 밀어내는 역할을 수행한다.
서버단에 다수의 웹 서버를 두고, 요청이 들어오면 리버스 프록시는 한 웹 서버에게 해당 요청을 밀어낸다.
참고 자료