프록시(Proxy) 란?
프록시 서버는 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다.
프록시는 "대리"라는 의미를 갖고 있으며, 서버와 서버 사이의 중계기 역할을 한다고 생각하면 된다.
프록시를 쓰는 이유는 보안상의 이유로 직접 통신할 수 없는 두 점사이에서 대리로 통신을 수행하여 보안성, 성능, 안정성을 향상시키기 위해서이다.
보통 웹은 클라이언트에서 서버로, 서버에서 클라이언트로 통신하며 데이터를 전달한다. 이때, 필연적으로 중복된 데이터를 반복적으로 전달하는 상황이 발생하는데, 이렇게 동일한 요청을 매번 처리하는 것은 리소스 낭비와 서버의 부하로 이어지게 된다.
따라서 본 서버에 도달하기 전에 Proxy Server를 미리 배치하여 중복 요청에 대해 동일한 응답을 할 수 있다면, 클라이언트에는 빠른 속도의 서비스를, 서버에게는 불필요한 부하를 줄이는 효과를 낼 수 있게 된다.
프록시 서버는 네트워크 상 어디에 위치하느냐, 혹은 어느 방향으로 데이터를 제공하느냐에 따라 Forward Proxy와 Reverse Proxy로 나뉘게 된다.
포워드 프록시 (Forward Proxy)
포워드 프록시 서버는 클라이언트 바로 뒤에 놓여있다.
같은 내부망에 존재하는 클라이언트의 요청을 받아 인터넷을 통해 외부 서버에서 데이터를 가져와 클라이언트에게 응답한다. 즉, 클라이언트가 서버에 접근하고자 할때, 클라이언트는 타겟 서버의 주소를 포워드 프록시에 전달하여, 포워드 프록시가 인터넷으로 요청된 내용을 가져오는 방식이다.
예를 들어, 우리가 example.com이라는 도메인에 요청을 하는 경우 프록시 서버가 해당 리소스를 대신 받아와 클라이언트에게 제공해 준다.
흔히 말하는 프록시서버가 바로 포워드 프록시 서버를 의미한다.
리버스 프록시 (Reverse Proxy)
리버스 프록시는 웹서버/WAS 앞에 놓여 있는 것을 말한다.
클라이언트는 웹서비스에 접근할 때, 웹 서버에 요청하는 것이 아닌, 프록시로 요청하게 되고, 프록시가 서버로부터 데이터를 가져오는 방식이다.
클라이언트 방향으로 데이터(Response)를 밀어주는 것이 포워드 프록시라면, 그 반대편인 서버 쪽으로 데이터(Request)를 밀어주는 것이 리버스 프록시이다.
이때, Reverse의 뜻은 배후, 뒷쪽의 라는 의미로 사용된다.
내부 서버가 직접 서비스를 제공해도 되지만 이렇게 구성하는 가장 큰 이유는 보안 때문이다.
보통 네트워크 환경에서 내부 네트워크와 외부 네트워크 사이에 구간이 존쟇나다. 해당 구간에 보통 메일 서버, 웹 서버 등 외부 서비스를 제공하는 서버가 위치하게 된다.
WAS를 해당 구간에 놓고 서비스해도 되지만, 보안상의 문제가 존재하기 때문에 사용하지 않는다. WAS는 Database와 직접적으로 연결되어 있으므로, WAS가 보안에 취약해질 경우, Database까지 영향을 받게 된다. 따라서 리버스 프록시 서버를 해당 구간에 두고 실제 서비스는 내부망에 위치시켜 서비스 하는 것이 일반적이다.