Gidhub BE Developer

포워드(Forward) 프록시와 리버스(Reverse) 프록시

2018-11-13
goodGid

포워드(Forward) 프록시

  • 클라이언트가 example.com에 연결하려고 하면 사용자 PC가 직접 연결하는게 아니라

  • 포워드 프록시 서버가 요청을 받아서 example.com에 연결하여

  • 그 결과를 클라이언트에 전달(forward)해 준다.


  • 포워드 프록시는 대개 캐슁 기능이 있으므로

  • 이렇게 캐시를 해 두고 난 후 캐시 안에 있는 정보를 요구하는 요청에 대해서는

  • 원격 서버에 접속하여 데이터를 가져올 필요가 없게 됨으로써 전송 시간을 절약 할 수 있게 됨과 동시에

  • 불필요하게 외부와의 연결을 하지 않아도 된다는 장점을 갖게 된다.


  • 또한 외부와의 트래픽을 줄이게 됨으로써 네트워크 병목 현상을 방지하는 효과도 얻을 수 있게 된다.

  • 그리고 정해진 사이트만 연결하게 설정하는 등 웹 사용 환경을 제한할 수 있으므로 기업 환경등에서 많이 사용한다.

사용 목적

  1. 보안을 위해 익명으로 컴퓨터를 유지

  2. 캐시를 사용하여 리소스로의 빠른 접근

  3. 네트워크 서비스나 콘텐츠로의 접근 정책을 적용 (원치 않는 사이트를 차단)

  4. 사용률을 기록하고 검사하기 위해 (회사는 인터넷 이용을 파악)

  5. 밖으로 나가는 콘텐츠를 검사하기 위해 (데이터 유출 보호)


리버스(Reverse) 프록시

  • 클라이언트가 example.com 웹 서비스에 데이터를 요청하면

  • Reverse Proxy는 이 요청을 받아서 내부 서버에서 데이터를 받은 후

  • 이 데이터를 클라이언트에 전달하게 된다.


  • 내부 서버가 직접 서비스를 제공해도 되지만 이렇게 구성하는 이유는 보안 때문이다.

  • 보통 기업의 네트워크 환경은 DMZ라고 하는 내부 네트워크와 외부 네트워크 사이에 위치하는 구간이 존재하며

  • 이 구간에는 메일 서버, 웹 서버, FTP 서버등 외부 서비스를 제공하는 서버가 위치하게 된다.

  • example.com 사는 서비스를 자바로 구현해서 WAS를 DMZ에 놓고 서비스해도 되지만

  • WAS는 보통 DB 서버와 연결되므로 WAS가 최전방에 있으면

  • WAS가 털릴 경우 DB 서버까지 같이 털리는 심각한 문제가 발생할 수 있다.

  • 이 때문에 리버스 프록시 서버를 두고 실제 서비스 서버는 내부망에 위치시키고

  • 프록시 서버만 내부에 있는 서비스 서버와 통신해서 결과를 클라이언트에게 제공하는 방식으로 서비스를 하게 된다.


  • 특히 리눅스 환경이라면 리버스 프록시로 아파치 웹 서버를 사용한다면 SELinux 를 켜 놓으면

  • SELinux 의 기본 정책이 웹 서버는 톰캣의 8080, 8009 포트만 접근 할 수 있으므로

  • 아파치 웹 서버가 해킹당해도 웹 서버 권한으로는 내부망으로 연결이 불가하다.


Reference


Index