Contents

Proxy

프록시에는 두 가지 종류가 있는데, 포워드 프록시와 리버스 프록시에 대해 알아보자.

Forward Proxy

일반적으로 프록시라고 하면 포워드 프록시를 말하는데, 클라이언트가 서버로 요청할 때 직접 요청하지 않고 먼저 프록시 서버를 통해 요청하는 방식이다.

내부 인트라넷 -> 인터넷 서버 요청시 또는 단말 -> 인터넷 서버

내부에서 인터넷의 서버로 요청할 때 먼저 프록시 서버를 호출하게 되서 서버에게 클라이언트가 누구인지 감추는 역할을 해준다.

단말에서는 미리 프록시 설정을하여 목적지로 데이터를 전송하면 중간에 프록시를 통해서 전송하게 된다.

서버가 응답받은 IP는 당연 프록시 IP이므로 클라이언트가 누군지 알 수 없다.

Reverse Proxy

리버스 프록시는 포워드 프록시와 반대로 생각하면 된다. 다른 서버의 정보를 프록시를 통해서 데이터를 받아오는 것..

클라이언트가 서버를 호출할 때 리버스 프록시를 호출하게 되고 프록시 서버가 서버를 요청하여 받은 응답을 클라이언트에게 전달하는 방식

인터넷 -> 내부 인트라넷 서버

리버스 프록시는 서버가 뭔지 감추는 역할을 해준다.

대표적으로 nginx, apache 웹 서버 등이 있다.

Reverse Proxy additional benefits include

  • 보안 강화
    • 백엔드 서버 감추는 역할
    • 블랙리스트 IP관리
    • 클라이언트 연결 제한
  • 확장성 및 유연성 향상
    • 클라이언트는 리버스 프록시 IP나 도메인만 보고 있으면 되므로 내부적으로는 서버를 확장하거나 구성을 변경하기 편함.
  • SSL termination
    • 들어오는 요청을 암호화하여 백엔드 서버의 비용을 감소할 수 있음.
      • 각 서버의 X509 인증서를 설치할 필요가 없다.
  • 서버 응답 압축
  • 캐시하여 요청에 대한 응답 반환
  • 직접 정적 콘텐츠 제공 (html, photo 등등)

Load balancer vs reverse proxy

  • 로드 밸런서를 배포하는 것은 여러 서버가 있는 경우에 유용하다. 보통 같은 기능을 제공하는 서버를 세트로 묶어서 트래픽을 라우팅한다.
  • 리버스 프록시는 웹 서버나 어플리케이션 서버가 하나 뿐인 경우에도 사용하기 좋다.
  • nginx 같은 것들은 7계층 리버스 프록시 및 부하 분산을 지원한다.

단점

  • 리버스 프록시를 도입하면 복잡성이 증가..
  • 리버스 프록시를 단일 서버로 두면 단일 장애 지점으로 맛탱이 가면 곤란해진다. 장애 조치할 뭔가를 구성하면 복잡성이 더욱 증가한다.

참고