본문 바로가기

알쓸코잡

꼬리에 꼬리를 무는 Proxy 이야기

꼬리에 꼬리를 무는 Proxy 이야기

프록시란?

  • 서버 <->  클라이언트 사이에 중계기로써 대리로 통신을 수행하는 것

프록시 서버

  • 그 중계기능을 하는 것(컴퓨터 시스템, 응용프로그램)을 프록시 서버라고 함

프록시를 왜 사용하는가?

  • 대리로 통신을 수행하여 보안성, 성능, 안정성 향상 시키려고

다른 장점은?

  • 프록시 서버 중 일부는 요청받은 내용들을 캐싱해서 저장해 둠

저장해서 뭐 하는가?

  1. 클라이언트 <-> 서버는 계속 통신하며 데이터를 전달하고 중복되는 데이터도 반복적으로 전달하게 됨
  2. 클라이언트가 캐시 내부에 존재하는 정보 요청 시, 프록시는 해당 데이터를 서버에서 가져 올필요 없이 가지고 있는 캐시에서 전달해 줌
  3. 이는 외부 트래픽이 줄어들어 네트워크 병목 현상 방지, 클라이언트는 빠른 속도 서비스 제공 가능 

프록시 종류?

  • Forward Proxy와 Reverse Proxy가 있음
  • 네트워크 상 위치, 어느 방향으로 데이터 제공하냐에 따라 구분

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

  • 흔히 말하는 프록시 서버는 포워드 프록시를 말함
  • 클라이언트 <-> 서버 중간에서 클라이언트 요청 대신 전달하고 응답을 받아와 클라이언트에 전달함
  • 즉, 클라이언트가 서버에 접근할 때
  1. 클라이언트가 웹페이지 요청(예: "허곰의 코딩블로그" 접속)
  2. 클라이언트는 요청을 Forward Proxy로 전달
  3. Forward Proxy는 클라이언틔 IP 주소 숨기고 웹 서버로 요청 전달
  4. 웹 서버는 요청 처리하고 결과를 Forward Proxy에게 전달
  5. Forward Proxy는 결과를 캐시에 저장하거나 부가적인 처리 하고, 클라이언트에게 전달


포워드 프록시 서버와 클라이언트는 같은 내부망 안에 존재해야 함?

  • 반드시는 아님, 포워드 프록시 서버는 인터넷상 어디에나 위치할 수 있음

그러나, 같은 내부망 안에 있다면 이점이 있긴 함

  1. 성능 향상 : 같은 내부망에 위치한 클라이언트와 프록시 서버 사이의 연결 속도가 빠름. 이것은 곧 요청 처리 시간 단축
  2. 트래픽 관리
  3. 보안 강화

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

  • 클라이언트 쪽으로 데이터(Response)를 밀어주는게 Forward라면, 그 반대편인 서버 쪽으로 데이터(Request)를 밀어주는 것이 Reverse Proxy라고 보면 된다.

예시

  1. 클라이언트가 웹 페이지를 요청 (예:  허곰코딩블로그 접속).
  2. 요청이 Reverse Proxy 서버로 전달
  3. Reverse Proxy는 요청을 백엔드 서버로 전달. (이때, 로드 밸런싱 알고리즘을 사용하여 가장 적합한 서버를 선택가능)
  4. 백엔드 서버는 요청된 웹 페이지를 생성하고, 결과를 Reverse Proxy에게 전달
  5. Reverse Proxy는 결과를 캐싱 하거나 압축한 뒤 클라이언트에게 전달


리버스 프록시를 왜 사용하는가?

  • 직접 서비스를 제공해도 되지만 보안 때문에 리버스 프록시 서버를 구성

잠깐, DMZ에 대해서 알고 가자

  • 기업이나 조직의 내부 네트워크와 인터넷 간에 위치한 중간 보안 영역
  • DMZ 안에 있는 호스트들은 내부 네트워크로 연결할 수 없고 오직 외부 네트워크에만 연결 가능
  • 이 구간에는 보통 메일 서버, 웹 서버, DNS 등 외부 서비스를 제공하는 서버가 있음

메일 서버, 웹 서버, DNS 등이 DMZ에 위치하는 이유가 뭐고?

  • 내부 네트워크를 보호하면서 외부에 노출되어야 하는 서버들이기 때문

내부 네트워크를 보호한다는 게 뭔지 예를 들어봐라

  • 웹 서버는 종종 기업이나 조직의 내부 데이터베이스와 통신해야 함, DB는 민감 정보를 포함하기 때문에 보호되어야 함
  • DNS 서버는 도메인이름 -> IP 주소로 변환하는 역할을 하는데, 역시 민감 정보를 포함하기 때문에 보호되어야 함

다시, 리버스 프록시 서버와 DMZ

  • WAS의 경우는 Reverse Proxy를 DMZ에 위치시키고 WAS는 내부망에 위치 시킴
  • WAS가 직접적으로 외부 노출되어 공격받으면 연결된 내부 정보도 같이 털리기 때문

Reverse Proxy 역할을 수행하는 녀석들

  • 웹 서버인 Apache와 Nginx는 Reverse Proxy 역할을 수행 가능함
  • 결국에 WEB(웹서버)를 DMZ에 두고, WAS(웹 애플리케이션 서버)는 내부방에 위치

참고