개발자로서 살아남기

서버 개발자로서 살아남기 - 프록시(Proxy)란?

코드 살인마 2022. 2. 10. 23:17
728x90

🔍개요

회사에서 다른 팀이 진행하던 프로젝트를 우리 팀이 하게 되었다. 그래서 인수인계 및 가이드 회의를 진행하던 중 프로젝트 구성도에 HA프록시(Proxy)가 있었는데, 어떤 느낌인지만 알고 자세히는 모르는 용어였다. 찾아보니, HAProxy를 알기 위해서는 Proxy와 Load Balance의 개념을 알아야 하는데, 하나씩 정리할 예정이다. 먼저 Proxy 부터!

🔍프록시(Proxy)란?

프록시 서버(proxy server)는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다. 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 '프록시', 그 중계 기능을 하는 것을 프록시 서버라고 부른다.

위키백과의 정의가 별로 와닿지가 않아서 정리글에 사용하진 않는데 프록시 만큼은 이해하기 쉬웠다.

말 그대로 클라이언트와 서버의 중계기 역할을 한다고 생각하면 된다.

 

🔍프록시 서버를 쓰는 이유?

  • 캐시 데이터 사용
    프록시 서버 중 일부는 프록시 서버에 요청된 내용을 캐시에 저장해둔다. 그러면 캐시에 저장되어 있는 내용에 대한 재 요청은 서버에 따로 접속할 필요 없이 저장된 내용을 그대로 돌려주면 되기 때문에 전송시간 절약 및 외부 트래픽 줄임으로서 네트워크 병목 현상도 방지가능하다.

 

  • 보안
    프록시 서버는 클라이언트와 서버 사이에 있기 때문에 프록시 서버 측에서 위험이 예상되는 웹 콘텐츠 및 악성코드를 필터랑 할 수 있다. 또한, 회사 및 중요 기관에서 보안 유지를 위해 내부 통신과 외부 데이터 접근(특정 사이트 접근)을 통제하고 인터넷 이용률 통계를 수집하기 위해 프록시 서버를 사용하기도 한다.

 

🔍프록시 서버의 종류

  • 포워드 프록시(forward proxy)
    프록시 서버가 클라이언트와 원격 서버 사이의 네트워크 상 어디에든 위치 할 수 있다. 클라이언트는 원격의 목적지 서버의 주소를 기반으로 자원을 요청하고, 프록시 서버는 그 주소를 받아 목적지 서버에 연결을 하고 자원을 가져온다. 즉 프록시 서버는 클라이언트가 알려주기 전에 목적지 서버의 주소를 알지 못한다.

 

  • 리버스 프록시(reverse proxy)
    프록시 서버가 사설 네트워크 상의 서버들 바로 앞단의 프론트엔드에 위치하여 서버들을 제어하고 보호한다. 클라이언트는 리버스 프록시 서버의 주소를 목적지 서버로 하여 데이터를 요청한다.
    클라이언트는 프록시 서버는 보통 서버로 보이게 되고, 리버스 프록시 서버는 클라이언트 요청에 따라 자신의 뒷쪽(reverse)에 있는 적합한 서버에 데이터 요청을 전달하고 응답된 데이터를 클라이언트로 전달한다.
    따라서 리버스 프록시 서버는 자신의 뒷쪽에 있는 실제 서버들에 대한 주소를 유지하고 있어야 한다. 리버스 프록시는 보통 보안이나 암호화를 위해 사용되고, 뒷단의 서버들에 대한 요청을 로드 밸런싱(load balancing)을 위해 사용되기도 한다.

 

참조

1. D.O의 IT 프록시서버와 사용목적

2. 위키백과 - 프록시서버

3. System Administrator 포워드 프록시 리버스 프록시의 차이