본문 바로가기
Web 개요

[Web] Forward Proxy / Reverse Proxy

by 도전하는 린치핀 2024. 1. 10.

1. 프록시(Proxy) 란?

기본적으로 프록시 서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용프로그램을 가리킨다.

즉, 프록시(Proxy)는 클라이언트와 서버 사이에 위치하여 중계기 역할을 하며 통신을 '대리'로 수행하는 것이다.

그렇다면 이러한 대리 역할을 하는 프록시를 사용하는 이유는 무엇일까?

그 이유는 보안상의 이유로 직접 통신할 수 없는 두 점 사이에서 대리로 통신을 수행하여 보안성, 성능, 안정성을 향상시키기 위해 사용한다.

 

보통 클라이언트(웹 브라우저)와 서버(웹 서버)와 통신을 주고 받을 때 데이터 형태로 주고 받는다.

이때, 통신을 반복적으로 진행할 때, 중복되는 데이터를 반복하여 전달한다면 효율적이지 못하고 리소스, 네트워크 트래픽 낭비와 이것은 곧 서버의 부하로 이어지게 된다.

그렇다면 중복되는 데이터를 검사하는 새로운 서버(proxy server)를 배치하여 서버와 클라이언트 사이에서 통신이 이루어질 때 중복되는 응답과 요청을 새로운 서버가 한다면 클라이언트는 유저 경험 증진으로 이어지고 서버의 경우 불필요한 부하와 연산을 줄이는 효과를 낼 수 있다.

우리는 이러한 동작을 캐싱이라고 한다.

1-1. 프록시의 두가지 종류

프록시 서버는 크게 생각했을 때 세가지의 관점으로 나뉜다고 생각할 수 있다.

  1. 네트워크 상 어디에 위치하느냐(클라이언트 쪽이라면 Forward Proxy / 서버 쪽이라면 Reverse Proxy)
  2. 어느 방향으로 데이터를 제공하느냐
  3. 캐싱의 관점에서 캐싱 여부를 어디서 결정하느냐(웹서버에서 HTTP Cache 헤더를 통해 제어한다면 Forward / 서비스 개발자가 직접 정책을 제어 및 배포하면 Reverse)

아래의 그림을 통해 프록시의 두가지를 확실하게 파악해보자

2. 포워드 프록시(Forward Proxy)

포워드 프록시 서버의 경우 클라이언트 바로 뒤에 놓여 있어 같은 내부망(Intranet)에 존재하는 클라이언트들의 요청을 받아 인터넷을 통해 외부 서버에서 데이터를 가져와 클라이언트에게 응답을 해준다.

아래의 그림을 통해 포워드 프록시를 쉽게 이해할 수 있다.

포워드 프록시가 할 수 있는 다양한 작업을 정리해보자

  1. 클라이언트 은닉 : IP 변환을 통해 원 요청자(클라이언트)를 은닉하여 클라이언트의 익명성을 추가할 수 있다.
  2. 클라이언트 접근 제어 : 특정 IP 혹은 웹 페이지에 대한 접근을 금지 할 수 있다.
  3. 캐싱 : 클라이언트가 받을 요청을 중간에 임시저장하여 추후 같은 요청을 반복할 시 저장되어 있는 결과를 반환하여 결과적으로 서버의 부하를 줄일 수 있다.

 

3. 리버스 프록시(Reverse Proxy)

리버스 프록시 서버의 경우 웹 서버 앞에 놓여 있어 클라이언트가 웹 서비스에 접근할  때 웹 서버에 직접적으로 접근하는 것이 아닌 리버스 프록시에 접근하여 리버스 프록시가 웹 서버에서 필요한 데이터를 가져오는 방식이다.

아래의 그림을 통해 리버스 프록시를 쉽게 이해할 수 있다.

 

리버스 프록시가 할 수 있는 다양한 작업을 정리해보자

  1. 요청 변환 : Header 세팅
  2. 요청 전달 : URL Mapping(Routing), 로드 밸런싱(요청 분산)을 통해 웹 서버의 부하를 완화시킬 수 있다.
  3. 서버 은닉 : 포워드 프록시의 클라이언트 은닉과 마찬가지로 클라이언트의 요청을 서버가 직접 받지 않아 서버 고유의 IP를 외부로 노출시키지 않을 수 있다.
  4. 서버 접근 제어(요청 필터) : 트래픽 제어, 최대 응답크기, 타임아웃 세팅 등 서버의 접근을 제어 할 수 있다
  5. 캐싱 : 클라이언트가 자주 요청하는 응답을 중간에 임시 저장하여 빠른 성능과 서버 부하를 완화 시킬 수 있다.
  6. 보안 : HTTPS를 진행할 때 다양한 서버가 존재하다면 모든 서버에서 키를 가지고 있어야하지만 리버스 프록시를 사용한다면 리버스 프록시 하나에만 키가 있다면 암호화 및 복호화를 리버스 프록시가 진행하면 되기 때문에 서버의 부담을 줄여 줄 수 있다.

 

4. 포워드 프록시 / 리버스 프록시 차이

 

위의 글에서 정리한 내용을 다시 정리하여 포워드 프록시와 리버스 프록시의 차이점에 대해서 확인해보자

 

  1. 프록시 서버의 위치
    • 포워드 프록시 서버는 클라이언트 앞에 놓여져 있다.
    • 리버스 프록시 서버는 웹서버 앞에 놓여져 있다.
  2. 프록시 서버 통신 대상
    • 포워드 프록시는 내부망에서 클라이언트와 프록시 서버가 통신하여 인터넷을 통해 외부에서 데이터를 가져온다
    • 리버스 프록시는 내부망에서 프록시 서버와 내부망 서버가 통신하여 인터넷을 통해 요청이 들어오면 프록시 서버가 받아 응답한다.
  3. 캐싱 여부를 결정
    • 포워드 프록시는 웹 서버에서 HTTP Cache 헤더를 통해 캐싱 여부를 제어한다.
    • 리버스 프록시는 서비스 개발자가 직접 정책을 제어 및 배포하면서 캐싱 여부를 제어한다.

Reference