sungwony

[Reverse Proxy] Reverse Proxy란 무엇인가? 본문

cloud & devops/etc

[Reverse Proxy] Reverse Proxy란 무엇인가?

일상이상삼상 2019. 10. 20. 04:39

이 포스팅은 Reverse Proxy Wikipedia를 기반으로 번역과 정리를 하여 포스팅 한 글입니다.


 

Reverse Proxy (출처 : wikipedia)

 

리버스 프록시(Reverse Proxy)란?

 

컴퓨터 네트워크에서 리버스 프록시란 하나 이상의 서버로 부터 클라이언트를 대신해서 리소스를 검색하는 프록시 서버이다. 이 리소스는 프록시 서버가 원래 가지고 있던 것 처럼 클라이언트에게 전달된다. 클라이언트가 임의의 서버에 접속하는데 중개자의 역할을 하는 포워드 프록시(Forward Proxy)와는 다르게 리버스 프록시는 서버가 클라리언트에게 접촉하는 것을 중개한다. 다시 말해서 프록시는 클라이언트를 대신하지만 리버스 프록시는 서버를 대신한다.

 

잘 알려진 웹 서버에서는 매우 자주 HTTP 역량이 약한 어플리케이션 프레임워크를 보호하면서 리버스 프록시 기능을 사용한다. 이 문장에서 '약하다'라는 의미는 과부하(excessive load) 처리 능력의 제한, 발견하기 어렵게 HTTP(S) 1.x, HTTP(S) 2.x 등에 부착될 수 있는 다양한 요청 포맷에 대한 처리의 제한을 의미한다. 그러한 경우 리버스 프록시는 HTTPS를 HTTP 요청으로 변환하거나, 차폐된 서버의 부하에 기반하여 들어오는 요청을 완충(buffer)하거나, 쿠키/세션 데이터를 처리하거나, 하나의 요청을 여러 요청으로 변환하고 응답을 종합할 수 있다.

 

리버스 프록시의 사용

 

  • 리버스 프록시는 본 서버 또는 서버들의 존재와 특성을 숨길 수 있다.
  • 어플리케이션 방화벽 기능은 서비스 서비스 거부 공격(DOS, denial-of-service) 또는 분산 서비스 거부 공격(DDOS, distributed-denial-of-service)과 같은 일반적인 웹 기반 공격으로부터 보호할 수 있다. 예를들어 멀웨어(malware)를 제거나 테이크 다운(takedown) 시작이 어려워질 수 있다.
  • 보안 웹사이트의 경우 웹 서버는 TLS 암호화를 스스로 수행하지 않고 TLS 가속 하드웨어를 장착할 수 있는 리버스 프록시로 작업을 전가(takedown)한다.
  • 리버스 프록시는 들어오는 요청의 부하를 개별 서버가 자체 어플리케이션 영역을 서비스하는 여러 서버로 분산시킬 수 있다. 웹 서버 근처에서 리버스 프록싱 하는 경우 리버스 프록시는 요청된 리소스가 연관된 서버 내 위치와 일치하도록 들어오는 요청의 URL을 각각 다시 작성해야 할 수 있다.
  • 리버스 프록시는 본 서버의 정적(static) 콘텐츠를 캐싱하여 부하를 줄일 수 있을 뿐만아니라 동적(dynamic) 콘텐츠도 캐싱할 수 있다(web acceleration). 이런 종류의 프록시 캐시는 대체로 상당한 수의 요청을 충족할 수 있어 서버의 부하를 크게 줄일 수 있다.
  • 리버스 프록시는 로딩 시간을 단축시키기 위해 압축을 통해 콘텐츠를 최적화할 수 있다.
  • '스푼 피드(spoon feed)'라는 기술에서 동적으로 생성된 페이지를 한꺼번에 만들어 리버스 프록시에 제공할 수 있으며 리버스 프록시에서 한 번에 이를 조금씩 리턴할 수 있다. 페이지를 생성하는 프로그램은 열려 있을 필요가 없으며 클라이언트가 전송을 완료하는 데 필요한 시간동안 서버 자원을 릴리즈한다.
  • 리버스 프록시는 단일 퍼블릭 IP 주소를 통해 여러 웹 서버에 접근할 수 있어야 하는 곳에서 적용할 수 있다. 웹 서버는 같은 로컬 IP 주소의 같은 머신 안에서 서로 다른 포트로 리슨한다. 또는 서로 다른 로컬 IP를 가진 여러 머신들에서도 가능하다. 리버스 프록시는 들어오는 각 요청들을 분석하고 로컬 영역 내의 올바른 서버로 전달한다.
  • 리버스 프록시는 자바스크립트 태그나 코드를 페이지에 배치하지 않고 A/B테스트 및 다변량(multivariate) 테스트를 수행할 수 있다.
  • 리버스 프록시는 인증이 없는 웹 서버에 기본 HTTP 액세스 인증을 추가할 수 있다.

 

'cloud & devops > etc' 카테고리의 다른 글

[MSA] MSA의 개념과 특징  (0) 2019.11.27