posts

그래서 proxy란 무엇인가?
cs

그래서 proxy란 무엇인가?

nginx와 같은 웹서버에 대한 설명을 보면 여기저기서 proxy라는 단어가 들려온다. 사실 proxy는 웹서버뿐 아니라 장르 불문 여러가지 기술이나 개념에서 자주 사용되는 단어이다. 프록시의 개념과 웹서버에서의 동작을 한번 살펴보자.

proxy

proxy

프록시(proxy)는 대리, 대신의 의미를 가지고 있다. 일상에 비유해보자. 전세집 부동산 계약을 하기위해 부동산 공인중개사를 필요로 하는 상황을 가정해보자. 이는 집주인과 나 사이에 부동산 공인중개사가 프록시 역할로 부동산 거래를 도맡는 것이다. 나는 집주인과 직접 연락하지 않고 전세집 거래를 진행할 수 있으며, 더욱 안전하게 업무를 진행할 수 있다. 또한 집주인에게 궁금한 정보가 있을때 공인중개사가 해당 내용을 안다면, 집주인까지 연락을 가지않고도 빠르게 정보를 얻을 수도 있다. 이 처럼 프록시는 중간자의 역할로 여러가지 기능을 수행할 수 있다. 프록시의 개념이 사용되는곳 마다 조금씩 다를 수 있지만, 중간에서 대리자 역할을 수행하는 것은 동일하다. 이번에는 웹서버의 프록시에 대해 함께 알아보자.

proxy server

프록시 서버(proxy server)는 브라우저 또는 모바일 기기인 클라이언트와 인터넷과 사이에 둘 수도 있는 foward proxy, 인터넷과 웹서버 사이에 둘 수 있는 reverse proxy가 있다. 그림과 함께 특징 및 장점에 대해서 알아보자.

foward proxy

proxy

포워드 프록시(foward proxy)는 클라이언트의 요청을 앞에서 대신받아 서버로 요청하는 형태로 동작한다. 이로써 각 클라이언트의 요청은 서버로부터 받게되면 이후 같은 요청에 대해서는 프록시 서버가 기억하고 이를 서버에 닿지 않고 결과를 반환해줄 수 있다. 이는 곧 캐시의 역할을 할 수 있는 것이다. 또한 클라이언트는 자신의 IP정보나 OS정보등 http 통신간에 서버로 전달되는 정보를 숨기고싶을 수 있다. 이때 프록시 서버가 클라이언트의 요청을 가로채어 정보를 변환시켜 서버에 요청할 수 있다. 이로써 클라이언트의 정보는 익명성의 효과를 얻을 수 있는 것이다.

reverse proxy

proxy

리버스 프록시(reverse proxy)는 서버로 요청온 정보를 대신 받아 각 서버들에게 전달하는 형태로 동작한다. 동일한 요청에 대해 서버의 부하를 거치지 않고 응답할 수 있는 캐시의 역할은 동일하다. 그리고 클라이언트는 각 서버에 요청을 할 때 리버스 프록시에서 지정한 IP주소 및 port로 요청을 하기 때문에 실제 서버의 IP주소 및 기타 정보들이 노출되지 않을 수 있다. 이는 곧 보안의 효과를 얻을 수 있는 것이다. 또한 리버스 프록시가 요청의 대리자 역할을 수행함으로써 여유있는 서버에서 정보를 얻어오도록 설계할 수 있다. 이는 곧 로드밸런서의 역할을 리버스 프록시에게 위임할 수 있는 것이다. 각 서버 단위에서 L4(OS layer4) 로드밸런싱, /product, /coupon등 어플리케이션 게이트웨이 역할로 L7(OS layer7) 로드밸런싱을 수행할 수 있는 것이다.

그래서?

그 외에도 spring AOP, 프록시 디자인패턴 등 중계자의 역할로 여러 기술이나 개념적으로도 많이 사용된다. 관심 있는 주제들을 찾아서 함께 공부해보면 좋을것 같다.

그래서 프록시라는 단어는 말 그대로 대리자, 중계자의 역할이다. 부동산 공인중개사의 역할을 생각하면 어렵지 않게 이해할 수 있다.


ref.