이 포스팅은 Backend Concept 시리즈 4 편 중 4 번째 글 입니다.

  • Part 1 - CDN
  • Part 2 - HTTP Structure
  • Part 3 - Load Balancing
  • Part 4 - This Post
▼ 목록 보기

프록시란?

대리 응답

image

프록시(proxy)는 “대리”라는 뜻이다. 그렇다면 어떠한 경우에서 이러한 대리의 개념이 필요할까? 보통은 보안상의 이유로 직접 통신하는 것이 문제가 발생할 경우 이런 방식을 사용한다. 이 때, 직접 통신할 수 없는 두 점 사이에서 중계기로 통신을 수행하는 기능을 “프록시” 그리고 그 기능을 수행하는 서버를 “프록시 서버”라 한다.

특징

위의 그림에서 보듯 프록시 서버는 중간에 위치해 있기 때문에, 어느 주체에서 바라보느냐에 따라 그 역할이 다르다.

먼저, 클라이언트 호스트 입장에서 보게되면 프록시 서버는 그저 원격 서버처럼 작동한다. 반대로 인터넷(서비스 서버) 입장에서 보면 프록시 서버는 마치 클라이언트 처럼 동작한다.

보통 보안 상의 목적으로 프록시 서버를 사용하지만, 사실 그 외에도 다양한 역할을 수행한다. 우선 프록시 서버는 프록시 서버에 요청된 내용들을 캐시를 사용하여 저장해 둔다. 그리고 이 캐시 안에 저장되어 있는 정보를 요청하는 경우, 원격 서버에 접속하지 않고 바로 응답한다. 이럴 경우 전송 시간을 절약할 수 있고, 불필요한 연결을 방지한다는 점에서 장점을 갖는다. 또한 외부와의 트래픽을 방지한다는 것도 장점이 될 수 있겠다.

프록시 서버의 종류

서버의 위치에 따라 두가지로 나뉜다.

Forward Proxy

스크린샷 2020-12-22 오후 3 46 53

먼저, 프록시 서버를 통과하여 인터넷에 연결되는 경우이다. 이러한 방식은 즉, 클라이언트 호스트들이 접근하고 싶은 원격 리소스에 가기 위해서는 프록시 서버를 통과해야 갈 수 있다는 말이다. 만약 프록시 서버에 캐시로 저장되어 있다면, 다음 요청시 캐시된 데이터로부터 바로 제공한다.

이 프록시 서버는 로컬 디스크에 데이터를 저장하며, 클라이언트 호스트들을 사용중인 웹 브라우저를 이용하여 프록시 서버 사용 설정을 해야 사용이 가능하기 때문에, 프록시 서버를 사용한다는 것을 인지 가능하다. 이러한 방식은 대역폭 사용을 감소시킬 수 있다는 것과 접근 정책 구현에 있어 다루기 쉬우면서 비용이 저렴하다. 또한 무조건 프록시 서버를 통과해야 하기 때문에 사용자가 접속하는 웹 사용환경을 제한할 수 있으므로 기업 환경에서 많이 사용한다.

Reverse Proxy

image

이번에는 전과 다르게 인터넷을 통하여 원격 서버에 접속하기 바로 전단계에 프록시 서버를 놓는 방식이다. 이 방식을 사용하면 클라이언트 호스트들은 프록시 서버에 연결되었다는 것을 알지 못한다. 마치 리소스에 직접 접근하는 것과 같이 느끼게 된다.

내부 서버가 직접 서비스를 제공해도 되지만 이렇게 구성하는 이유는 보안 때문이다. 보통 기업 네트워크 환경은 DMZ 라는 내부 네트워크외부 네트워크 사이에 위치하는 구간이 존재하고, 이 구간에는 웹, FTP, 메일 등 외부 서비스를 제공하는 서버들이 위치하고 있다. 즉, 이러한 서버가 프록시 서버의 역할을 하고 있다고 생각하면 된다.

만약, DMZ 위치에 WAS(Web application Server)를 두고 사용을 했다고 생각해보자. 서비스를 하는데는 지장이 없겠지만, WAS에는 보통 DB와 통신을 하도록 연동이 되어 있다. 이러한 경우 WAS가 털리면 DB까지 같이 털린다. 그렇기 때문에 WAS는 DMZ의 뒤에 위치시키고, 프록시 서버로 메일 서버, 웹 서버를 두고 데이터를 WAS로 부터 받아와서 서비스를 하는 방식을 많이 사용한다.