Proxy Server란?

Proxy Server는 자신을 통해 네트워크에 간접적으로 접속할 수 있도록 하는 서버를 가리킨다. 어플리케이션 서버가 직접 클라이언트의 요청을 처리하는 대신, 프록시 서버가 먼저 그 요청을 선제적으로 주거나 받고 이를 처리한다. 쉽게 말해, 클라이언트가 직접 어플리케이션 서버로 요청을 보내던 것을 중간에 어떤 서버나 프로그램이 생겨서 요청을 대신 받고, 대신 전해준다고 생각하면 편하다. (네트워크가 한 레이어 정도 추상화되었다고 해야하나...랄까)

프록시 서버를 활용하는 것은 여러 장점을 갖는데, 클라이언트가 동일한 요청을 보낸다면 이를 캐싱하여 전반적인 서비스 속도의 향상을 기대할 수 있고, 서비스에 접근하는 정책을 결정하거나 요청의 처리에 대해 로그를 남기기에 수월하며, 원래 요청을 보낸 클라이언트의 IP를 공개하지 않고 요청을 처리할 수 있어 보안을 강화하거나 역으로 보안을 회피할 목적으로도 쓰이기도 한다.

실제로 현재 IP 추적이나 보안 감시를 회피할 목적으로 쓰이는 VPN의 기본적인 원리는 프록시 서버에다가 클라이언트의 실제 IP를 가상의 IP로 맵핑하거나 서버를 거치는 인터넷 트래픽을 재할당하는 요소를 더하여진 것이라고 한다.

Reverse Proxy vs Front Proxy

프록시 서버는 프록시 서버의 위치와 요청 처리의 방식, 정책으로 여러가지 종류가 나뉘지만, 가장 흔하게 쓰는 두 가지 유형이 바로 Front Proxy와 Reverse Proxy이다.

https://velog.velcdn.com/images/jekim/post/a38730d0-a0ed-4487-863c-1c80fcd08fff/image.png

Front Proxy와 Reverse Proxy는 클라이언트가 어디로 요청을 보내고, 이 요청을 프록시 서버가 어떻게 처리하느냐가 다르다. 우선 먼저 Front Proxy의 경우, 클라이언트는 애플리케이션 서버에 '직접' 요청을 보낸다. 즉, 요청을 보낼 서비스의 주소가 www.abc.com이라면, 클라이언트는 www.abc.com에 직접 요청을 하는 방식이다. 대신 프록시 서버는 이 사이에서 클라이언트의 요청을 받아 애플리케이션 서버와 연결하고, 클라이언트에게 처리된 요청을 전달하는 식이다.

https://velog.velcdn.com/images/jekim/post/cef7a4c2-197a-4314-b76c-b86436f90d89/image.png

Reverse Proxy는 이와 반대로 클라이언트가 프록시 서버의 주소로 직접 요청을 보낸다. 프록시 서버는 클라이언트의 요청을 받고 내부적으로 맵핑된 애플리케이션 서버의 주소를 이용해 요청을 중계한다.

Reverse Proxy에서 기대할 수 있는 장점