▶ 리버스 프록시는 웹 서버의 바로 앞에 위치해서 웹 서버의 버퍼로서의 역할을 수행한다는 점도 중요하다. ▶ 특히 HTTP의 Keep-Alive 의 기느을 이용하고자 할 경우에 이 점에서 리버스 프록시의 존재가 중 요해지게 되었다.
▶ HTTP
에는 Keep-Alive 라는 기능이 있다. 어떠한 특정 클라이언트가 한 번에 다수의 컨텐츠를 동일한 웹 서버에서 요청할 경우
다수의 HTTP 요청마다 서버와 접속 하고 끊고를 반복하게 된다면 이는 비효율적인 방법이다.
▶ 최초 요청시에 연결된 서버와의 접속을
해당 요청이 종료된 후에도 접속을 끊지 않고 유치한 채로 이어지는 요청에 해당 접속을 계속 사용함으로써, 하나의 접속으로
다수의 요청을 처리 하는 기능이다.
▶ 서버측이 Keep-Alive OK 라는 지시를 HTTP 헤더로 브라우저에 알리면,
브라우저는 서버와의 접속을 계속 유지해서 Keep-Alive 사양을 따라 하나의 접속으로 여러 파일들을 다운로드 한다.
▶ 실제,
Keep-Alive 가 OFF인 서버보다 Keep-Alive 가 유효한 서버로부터 파일을 다운로드 하는 것 이 실제 체감속도
면에서도 빠르게 느껴진다.
▶ 한번 연결된 접속을 당분간 유지하는 특성상, 웹 서버에 다소 부하를 일으킨다. 구체적으로는
특정 클라이언트로부터 요청을 받은 프로세스/스레드 는 그 시점으로 부터 일정 시간 동안 해당 클라이언트로의 응답을 위해서
점유되는 것을 들 수 있다.
▶ 메모리 관리 관점에서 보면 하나의 프로세스당 메모리 소비량이 많은 웹 서버에서는 하나의 서버 내에 실행 될 수 있는 프로세스 수는
한정적이다. 이 떄 독단적으로 Keep-Alive 를 ON 시켰을 경우에 프로세스 중 다수가 Keep-Alive 의 접속 유지를
위해 소비된다.
▶ 여기서 만약 Keep-Alive 가 OFF 된다면 클라이언트 에서는 속도가 상당히 떨어질 것이다. 여기서 리버스 프록시를 추가한다면 리버스 프록시 서버에서는 실제 프로세스당 메모리 소비량이 그다지 많지 않기 떄문에 하나의 호스트내에서도 한정적인 프로세스를 여유롭게 활용할 수가 있 다.
▶ 일부 프로세스가 Keep-Alive 연결을 유지하기 위해 소비된다고 해도 실제 서버에는 큰 영향을 끼치지 않는다. 그리고
클라이언트와 리버스 프록시 서버 사이에만 Keep-Alive 으로 하고 리버스 프록시와 웹 서버 사이에는 Keep-Alive 를
OFF 로 한다.
▶ 그러면 웹 서버는 프로세스 수가 적더라도 하나의 요청이 종료되면 곧 바로 그 후에 다른 요청에
응답할 수가 있게된다. 전체적으로 동시에 다룰 수 있는 클라이언트의 수는 많아지고, 전송량 또한 향상된다. 클라이언트와 접속
유지를 리버스 프록시 서버가 처리하게 되므로 메모리 소비량이 많은 웹 서버에서는 큰 영향을 주지 않게된다.