[주니어 시리즈] 프록시 서버

 

블로그에 어려운 글로만 채우는 것 같아서 “주니어 시리즈”를 기획했다. 주니어 개발자가 알면 좋을 것 같은 내용으로 최대한 쉽게 작성하려고 한다.
우리가 사용하는 인터넷은 풍부한 정보와 도구를 제공함과 소셜 네트워크 및 음성/영상 기능을 사용하여 전 세계 사람들을 연결해왔다.
이 모든 것은 보안 및 개인 정보 침해에 대한 위험과 함께 제공된다. 본 글에서는 이런 위험을 완화하는데 중요한 역할을 하는 프록시에 대해서 설명하려고 한다.

프록시 서버

클라이언트에서 웹서버로 전송되는 모든 요청은 일종의 프록시 서버를 거치게 된다. 프록시 서버는 클라이언트와 인터넷 사이의 게이트웨이 역할을 하며 웹사이트와 분리한다.
웹 요청의 소스 IP 주소를 프록시 서버의 IP 주소로 변경한 다음 웹서버로 전달하게 된다. 웹서버는 클라이언트를 인식하지 못하고 프록시 서버만 볼 수 있다.

image

프록시 서버는 단일 대문 역할을 하여 보안 정책을 보다 쉽게 시행할 수 있다.
요청된 웹페이지를 프록시 서버에 저장하여 성능을 향상시키는 캐싱 매커니즘도 제공한다.
요청된 웹페이지가 캐시 메모리에서 사용 가능한 경우 요청을 웹서버로 전달하지 않고 캐시된 웹페이지를 클라이언트에게 전달한다.
이를 통해 사용자가 많이 방문하는 웹사이트는 서버의 부하를 줄여 많은 비용을 절약 할 수 있다.

순방향(포워드) 프록시 서버

순방향 프록시는 일반적으로 클라이언트에서 구현되며 여러 클라이언트 또는 클라이언트 소스 앞에 위치한다.
순방향 프록시 서버는 주로 회사에서 직원의 인터넷 사용을 관리하고 콘텐츠를 제한하는데 사용된다.
또한 회사의 네트워크에 위협이 될 수 있는 모든 요청을 차단하여 회사 네트워크를 보호하는 방화벽으로도 사용된다.
프록시 서버는 사용자의 국가에서 차단될 수 있는 콘텐츠를 우회하여 접근하는데도 사용되기도 한다.
프록시 서버가 사용자의 세부 정보를 숨김으로 사용자는 익명으로 인터넷을 탐색할 수 있다.

image

역방향(리버스) 프록시 서버

역방향 프록시 서버는 클라이언트쪽이 아닌 서버쪽에 구현된다. 여러 웹서버 앞에 위치하며 들어오는 요청을 웹서버로 전달한다. 따라서 클라이언트가 아닌 웹서버에 익명성을 제공한다.
역방향 프록시 서버는 일반적으로 웹서버를 대신하여 인증, 콘텐츠 캐싱 및 암호화/복호화 같은 작업을 수행하는데 사용된다.
또한 역방향 프록시는 로드 밸런서로 사용되기도 한다. 하지만 들어오는 트래픽을 웹서버마다 효율적으로 분산시키기 위한 용도로는 최적화되어 있지 않다.
일반적으로 역방향 프록시 서버는 웹서버 또는 웹서버 그룹 단위로 로드 밸런싱을 하게 된다.

image

요약

프록시 서버는 클라이언트와 인터넷 사이의 대문(게이트웨이) 역할을 하므로써 최종 사용자를 웹사이트와 분리한다. 프록시 서버의 위치에 따라 순방향 프록시 서버인지 역방향 프록시 서버인지가 결정된다. 순방향 프록시는 클라이언트에서 구현되며 여러 클라이언트 또는 클라이언트 앞에 위치하여 요청을 웹서버로 전달한다. 역방향 프록시 서버는 여러 웹서버 앞에 위치하여 요청을 웹서버로 전달한다.

위에서 언급한 내용들을 예시로 표현해보자.

image

레스토랑에서 웨이터가 주문을 받아 주방장에게 전달하면 주방장은 주문을 외치고 주방에 있는 모든 사람에게 작업을 할당한다고 가정해보자.

  • 당신은 클라이언트이다.
  • 당신의 주문은 웹요청이다.
  • 웨이터는 순방향 프록시 서버이다.
  • 주방장은 역방향 프록시 서버이다.
  • 주방에서 일하는 다른 세프들은 웹서버이다.

이것으로 프록시에 대한 설명을 끝났습니다. 궁금하신 사항은 의견을 달아주세요.

잠깐, 글이 유익했나요?

Buy Me A Coffee