프록시(Proxy) 서버와 리버스(Reverse) 프록시

date
Oct 22, 2023
slug
proxy-and-reverse-proxy
summary
프록시 서버와 리버스 프록시 개념 정리, 그리고 VPN
thumbnail
status
publish

프록시 (Proxy)

프록시(Proxy)는 사전적 의미로 대리(위임) 을 뜻한다.
이를 네트워크에 적용하면 클라이언트서버사이에서 중계기 역할을 해주는 주체를 프록시 서버(Proxy Server)라고 지칭한다.

프록시 서버 (Proxy Server)

프록시 서버가 없다면 클라이언트에서 서버까지 트래픽이 직접 흐르게된다. 따라서 프록시 서버를 이용하게 되면 클라이언트와 서버가 통신이 프록시 서버를 무조건 거치게 되어 흐름이 바뀐다.
이를 통해서 중간에서 데이터를 캐싱해서 동일한 요청이 오면 서버까지 트래픽이 가지 않고 프록시 서버에서 바로 클라이언트에게 캐싱된 데이터를 반환해 주거나, 트래픽을 원하는 곳으로 라우팅 시키는 등의 네트워크 중간에 있는 특징을 이용하여 트래픽을 활용한 다양한 기능들을 사용할 수 있다.
💡
게이트웨이(Gateway)는 서로 다른 프로토콜을 사용하는 둘 이상을 연결하기 때문에 프록시와 다르다. 하지만 프록시도 브라우저와 서버의 서로 다른 버전의 HTTP를 구현하고, 게이트웨이와 같은 다양한 기능들을 제공하고 있기 때문에, 실질적으로 모호하다.

프록시 서버의 두 종류

프록시 서버는 서버의 네트워크상 위치에 따라서 2개의 종류로 나눌 수 있다.

정방향 프록시 (Forward Proxy)

notion image
일반적으로 알고있는 프록시 서버이다. 흐름상 클라이언트 뒤, 인터넷 사이(사내 네트워크)에 프록시 서버가 위치하는 형태이다.

클라이언트 접근 제한

학교, 정부 기관등에서 방화벽으로 활용이 가능하다. 프록시 서버로 인해 클라이언트 요청이 웹 서버에 직접적으로 접근하지 못 하므로 제한된 사이트에 접근하면 해당 요청에 대한 엑세스 권한을 거부할 수 있다.
군대 인터넷(사지방)을 생각해보자..😳
즉, 서버 입장에서는 클라이언트의 요청에 대한 방어 계층으로 사용이 가능해진다. 🛡️

클라이언트 암호화 (Encryption)

반대로 클라이언트 보안용으로 사용할 수 있는데, 프록시 서버에서 사용자 IP를 암호화하게 되면 웹 서버 입장에서는 역추적해도 사용자를 특정할 수 없기 때문에, 클라이언트 입장에서는 자신의 신원을 감춘채 서비스 이용이 가능해진다.
 

역방향 프록시 (Reverse Proxy)

notion image
리버스 프록시 서버웹 서버 or WAS(Web Application Server) 앞에 위치하게 된다.
웹 서버가 직접적으로 서비스를 제공하는게 아니라 프록시 서버를 거치는 형태가 된다.

서버 보호

클라이언트는 리버스 프록시 서버가 중간에 있기 때문에 서버의 실제 IP를 알지 못 한다.
따라서 리버스 프록시 서버 자체가 공격에 대상이 될 수는 있지만 서버에 직접적인 공격(DDOS등)이 불가능해진다.

로드 밸런싱 (Load Balancing)

수백만개의 트래픽이 발생한다고 가정해보자. 만약 프록시 서버에 존재하지 않는다면 서버가 수 많은 트래픽을 직접적으로 받게된다. 프록시 서버를 로드 밸런싱 용도로 이용해서 사용자들의 트래픽을 여러개의 서버로 나눠서 보내준다면 서버의 부하를 줄여 줄 수 있다.

캐싱

클라이언트가 서버의 최초 접근 후 다시 요청한다고 가정할 때, 프록시 서버에서 최초 요청에 사용했던 데이터를 캐싱해두고 재사용 하게 되면 서버의 부하를 줄임과 동시에 클라이언트 입장에서는 더 빠르게 응답을 받을 수 있게 된다.
이는 글로벌하게 생각했을 때 효과가 더 좋아진다.
대한민국에 사용자미국에 있는 서버를 이용한다고 해보자. 최초 요청은 미국에 있는 서버까지 트래픽이 오가면서 응답을 받겠지만, 그 후 요청부터는 대한민국에 존재하는 리버스 프록시 서버를 이용하여 응답을 받을 수 있다.

글로벌 서버 부하 분산 (GSLB)

만약 지리적으로 서버가 잘 분산되어 있다면 클라이언트 요청이 리버스 프록시를 통과할 때, 로드 밸런싱으로 사용자에게 지리적으로 가장 가까운 웹 서버에 연결시켜 줄 수 있다.
그 이후 캐싱 기능을 이용한다면 클라이언트는 최적의 서비스 경험이 가능하게 될 것이다 🥳

SSL 암호화

각 클라이언트에 대한 SSL(또는 TLS) 통신의 암호화 및 암호 해독은 원본 서버의 경우에 계산 비용이 든다. 따라서 역방향 프록시에서 요청을 해독하고 모든 응답을 암호화하여 서버의 리소스를 확보할 수 있다.

VPN과 차이점은?

VPN(Virtual Private Network) 역시 클라이언트와 서버 사이에서 중개해주는 역할을 해준 것으로 알고 있는데, 정확한 차이가 뭘까?
프록시 서버와 동작 과정(데이터 암호화)은 비슷하지만, VPN사용자의 기기에 직접 설치하는 앱인 경우가 많다.
따라서 클라이언트는 공용망을 사용하더라도 내부망(사설망)을 이용하는 것처럼 자신의 모든 요청들을 암호화한 상태로 안전한 통신이 가능해진다.