웹 개발과 운영을 한다면 포워드 프록시와 리버스 프록시 개념에 대해서 필수적으로 알고 있어야 합니다.

Proxy 란 대행자의 뜻을 갖고 있으므로 네트워크에서 프록시 서버는 어떤 업무를 대행하는 역할을 수행한다는 것을 짐작할 수 있을것 입니다.


그러면 먼저 포워드 프록시에 대해서 알아보겠습니다.

Forward Proxy 

포워드 프록시는 사용자가 어떤 사이트에 연결하려고 할때 이를 대행해서 자료를 받아다가 전달해 주는 역할을 하는 서버입니다.

요청한 사용자의 IP 를 바꾸고 외부에 접속하게 되므로 실제 서비스를 제공하는 입장에서는 포워드 프록시 뒤에 있는 사용자들을 모를 수 있습니다.

포워드 프록시 동작 방식

일반적으로는 보통 white list 기반으로 외부 사이트 접속을 허용하는 네트워크 정책을 가진 회사가 이런 프록시 정책을 사용하는 경우가 많습니다.

또는 개인 사용자가 자신의 신분을 감추거나 혹은 자신의 사용하는 네트워크에서 연결이 허용되지 않은 사이트에 연결할 때도 포워드 프록시에 접속하기도 합니다.


IPSec 이나 SSL 기반의 VPN도 크게 보면 일종의 forward proxy 라고 볼 수 있습니다.


Reverse Proxy

리버스 프록시는 포워드와는 반대로 사용자의 요청을 받아서 내부망에 전달해서 받은 데이터를 다시 사용자들에게 전달하는 역할을 수행합니다.

예로 lesstif.com 이라는 웹 서비스에 사용자가 자료를 요청하면 lesstif.com 에 구성한 리버스 프록시는 내부망에 있는 WAS 에 다시 자료를 요청하고 WAS 에게 받은 자료를 사용자에게 다시 전달합니다.


리버스 프록시는 사용자들에게 기업 내부의 실제 서버(WAS, DBMS등)의 정보를 숨기므로 사용자들은 리버스 프록시만 볼 수 있습니다.

리버스 프록시 동작 방식

프록시 서버의 장점

프록시 서버는 다음과 같은 여러 장점이 있습니다.

보안

보통 기업의 네트워크 환경은 비무장 지대(DMZ; Demilitarized Zone) 라고 하는 내부 네트워크와 외부 네트워크 사이에 위치하는 구간이 존재합니다.

기업의 네트워크 구성

위 그림과 같이 DMZ 대역내에는 외부에 서비스를 제공하는 서버(메일 서버, 웹 서버, DNS 서버)를 배치하고 네트워크는 1, 2차 방화벽으로 보호합니다.


웹 서비스를 제공하려면 WAS 를 DMZ 에 놓고 서비스해도 되지만 이런 서비스는 보통 내부의 DBMS 서버와 연결되어 있습니다.

만약 WAS 가 최전방에 있으면 WAS 가 털릴 경우 DBMS 와 관련 서버까지 모두 같이 털리는 심각한 보안 문제가 발생할 수 있습니다.

이때문에 DMZ 존에 웹 서버를 두고 리버스 프락시로 설정하고 WAS 는 2차 방화벽 뒤의 내부망에 위치시키게 설정합니다.


리버스 프락시로 동작하는 웹 서버만 내부 WAS 와 연결하도록 설정하므로 웹 서버가 해킹당해도 2차 방화벽을 다시 뚫어야 하므로 더 보안에 강해질 수 있습니다.


특히 Red Hat 이나 CentOS 계열이라면 SELinux 를 켜 놓으면 SELinux 의 강제 접근 통제에 따라 웹 서버는 사전 정해진 포트(예: WAS 의 8080, 8009)만 접근 할 수 있으므로 웹 서버가 해킹당해도 2차 피해를 최소화할 수 있습니다.

성능(performance)

프록시 서버를 구성하면 캐싱과 부하 분산등의 기법을 사용해서 Cache Server 를 붙이거나 SSL 하드웨어 가속기를 연동하는등 아키텍처와 네트워크 측면에서 성능 개선을 하기가 용이해 집니다.

아주 심플하게 생각하면 cloudflare 나 akamai 같은 CDN 도 Reverse proxy 로 동작하는 캐시 서버라고 볼수 있으며 콘텐츠를 오리진 서버에 다시 요청하지 않아도 되므로 네트워크 대역폭을 감소시키고 서비스를 빠르고 안정적으로 제공할 수 있습니

신뢰성(reliability)과 안정성

프록시 서버로 구성하면 뒤에 실제 서버들은 이중화나 클러스터링(Clustering) 을 통해 특정 서버가 문제 생겨도 전체 서비스는 안정적으로 제공할 수 있으며 CDN 을 연동한다면 DDOS 공격을 효과적으로 방어하여 서비스 안정성을 높일 수 있습니다.


확장성

프록시 서버와 클러스터로 구성하면 사용자가 증가할 경우 상황에 맞게 Web Server 나 WAS 드을 유연하게 늘릴 수 있는 장점이 있습니다.

또 리버스 프록시 앞에 L4 나 load balancer 를 붙여서 Round Robin(RR), Least connection 등 상황에 맞는 분배 알고리즘을 적용해 서비스 신뢰성을 높일 수 있습니다.


Ref