▶ 리버스 프록시 (Rivers Proxy) - 로드밸런서를 이용하여 웹 서버의 부하 분산 기능은 가능해졌지만, IPVS(LVS)와 같은 로드밸런서 는 L4 레벨에서 패킷 전송만을
한다. 웹 서버가 클라이언트 에플리케이션으로부터의 요청에 직접 응답하는 구성이라는 부분에 대해서는 변함이 없다. - 여기서 로드밸런서와 웹 서버 사이에 리버스 프록시라의 역할을 넣음으로써 보다 유연하게 부하분산이 가능하다. 아파치에 mod_proxy 나 mod_proxy_balancer를 내장함으로써 구축이 가능하다. 아파치 외에도 lighthttpd 나 Squid 등으로도 이용이 가능하다.
- 리버스 프록시는 클라이언트로부터의 요청을 받아서 적절한 웹 서버로 요청을 전송한다. 웹 서버 는 요청을 받아서 평소처럼 처리를
하지만, 응답은 클라이언트로 보내지 않고 리버스 프록시로 반환한다. 요청을 받은 리버스 프록시는 그 응답을 클라이언트로 반환
한다.
▶ 리버스 프록시 장점 1. HTTP 요청의 내용에 따라 시스템의 동작 제어(L7 스위치가 하는 역할과 비슷하다) 2. 시스템 전체의 메모리 사용효율 향상 3. 웹 서버가 응답하는 데이터의 버퍼링 역할 4. 아파치 모듈을 이용한 처리의 제어
▶ HTTP 요청에 따른 시스템의 동작 제어 - IPVS
는 L4이므로 클라이언트로부터 요구된 HTTP 요청의 내용에 따라 처리를 분배하는 일은 할 수 없다. 그러나 리버스 프록시가
있으면, HTTP요청 내에서 URL을 보고 최종적인 처리를 각각 다른 서버에 분배하는 제어가 가능하다.
- 아파치로 리버스 프록시를 구축할 경우, 이러한 분배는 mod_rewrite의 RewriteRule 기능을 이용하게 된다.
mod_rewrite로 제어할 수 있다면 거의 무엇이든 가능하다고도 할 수 있다. 예를 들면 다음과 같은 처리가 가능하다.
- 클라이언트의 IP주소를 보고 특정 IP주소로만 서버로의 접속을 허가한다. - 클라이언트의 User-Agent 를 보고 임의의 User-Agent 로부터의 요청을 특별한 웹 서버 로 접속되도록 유도한다. - /Rivers/Proxy/Study 라는 URL 을 /Rivers?Proxy=Study 라는 URL로 변경해서 웹 서버 로 요청한다.
▶ IP주소를 이용한 제어 - 예를 들어 IP주소에 따른 제어는 악의가 있는 호스트로부터의 요청을 차단할 목적에도 이용할 수 있다. - 또한, 관리자 전용 페이지가
포함된 사이트에서 IP주소와 URL에 의한 제어를 조합해서 관리자 전용 페이지에는 특정 IP주소에서만 접속 가능하도록 제한할 수도
있다.
▶ User-Agent 에 의한 제어 - Googlebot 이나 Yahoo! Slurp 등의 검색엔진 로봇에의 대응에 이용할 수 있다. - 예를 들면, 사용자에 대해서는 캐싱하기가 어려운 동적인 페이지(사용자에 맞게 사용자명이 표시 되는 페이지 등)가 있다고 할때,
로봇에게는 사용자명을 표시할 필요가 없을 경우, 그 페이지를 캐싱할 수가 있다. 여기서 User-Agent를 보고 로봇의
User-Agent인 경우는 캐시 서버를 경유해 서 웹 서버로 접속되도록 제어하는 일이 가능하다.
▶ URL 다시 쓰기 - 최근에는 사이트 전체의 계층 구조를 쉽게 알 수 있게 하려는 등의 이유로 사용자에게 웹 사이트의 URL을 깔끔하게 보이고자 할 경우도 있다.