2017년 7월 6일 목요일

[HTTP 프로토콜 강좌]#6 가상호스트(Virtual Hosts) 와 리다이렉션(Redirection)

송중기와 송혜교가 결혼을 한다고 하네.. 스타급 연예 뉴스.. 둘이 사귄다고 보도 했던 디스패치는 정말 대단한것 같다.

HTTP 요청 방식에 대한 포스팅을 모두 마치고, 오늘은 가상호스트(Virtual Hosts) 와 리다이렉션(Redirection) 에 대해 이야기 해보려한다.

가상호스트와 리다이렉션은 단순하지만, 웹서비스에 있어서 필수적인 옵션들이라 할수 있겠다.

1. 가상호스트

웹 초창기 당연히 웹을 이용하는 클라이언트(사용자)는 극히 제한적이며, 웹서버의 역할 또한 정보를 제공하는 단순한 수준에 있었다.

하지만, 지금은 어떤가? 웹서비스는 이메일, 웹하드, 쇼핑, 티켓구매, 은행등등 다양해졌고, 이를 이용하는 클라이언트(사용자)의 스펙트럼 역시 굉장히 넓어졌다.

다양한 웹어플리케이션.. 이를 동작하기 위한 물리적인 웹서버의 수 또한 만만치 않다.

이렇다 보니 운영상 고민거리가 생기게 된다.
가령 10개의 웹어플리케이션이 있다고 예를 들자. 각각의 어플리케이션은 역할이 모두 다르기 때문에 서비스 IP나 도메인을 서로 다르게 설정해야 한다.
그렇다 보니 어플리케이션의 수와 같이 10개의 서버가 필요로 하게 된다.

10개의 서버를 위치시킬 물리적인 공간이 필요하게 되고, 10개의 웹어플리케이션중에서도 사용량이 적은 서비스의 경우에는 CPU, 메모리등의 서버 자원 낭비가 발생되게 된다.

HTTP 1.0에서는 이를 해소하기 위한 방안이 사실 없다.
하지만 현재 사용하고 있는 HTTP 1.1에서는 이를 효과적으로 개선하기 위한 옵션 하나가 추가 되었는데 바로 이것이 "Virtual Hosts" 이다.

사실, 굉장히 단순한 옵션 하나가 추가되었을 뿐인데, 웹서비스를 제공하는 환경적인 측면에서는 실로 놀라운 효과를 얻게 된다.

Virtual Hosts는 하나의 물리적인 서버에서 다수개의 웹서비스를 운영이 가능하게 한 기능이다. 즉, 서비스 도메인(웹주소)은 서로 다르더라도 한개의 IP 주소로 모든 서비스를 가능케 한 것이다.

오늘날 웹호스팅 업체들은 바로 이 HTTP 기능이 있기 때문에 생겨났다고 해도 과언이 아닌것이다.



우리가 wireshark 등으로 패킷을 캡쳐해 보면, HTTP 헤더에 "Host" 라는 헤더가 있는데, 바로 이정보를 통해 가상호스트를 지원할 수 있게 된 것이다.



2. 리다이렉션

가상호스트가 하나의 서버에서 복수개의 웹사이트를 운영가능케 했다면, 리다이렉션은 하나의 사이트가 복수개의 웹서버를 이용할 수 있게 하는 것이다.

그냥 쉽게, 가상호스트는 복수개를 하나로 모으는것이고.. 리다이렉션은 하나를 복수개로 연결하는 것으로 이해하면 쉽다.



리다이렉션은 서버가 클라이언트(사용자)를 다른 URI로 전달한다.
다음 그림을 확인해 보면 이해가 쉬울 것이다.



클라이언트가 첫번째 웹서버의 컨텐츠를 요청하면, 첫번째 서버는 컨텐츠 대신 301 Moved 상태코드를 전송한다. 응답데이터에는 상태코드와 함께 리다이렉션을 수행할 URI 정보도 같이 포함된다.
클라이언트는 3단계와 같이 리다이렉션할 URI로 새로운 접속과 요청을 시도한다.

아래는 필자가 테스트용도의 서버에 리다이렉션 설정을 해놓고, 클라이언트에서 접속해 본결과이다.
캡쳐 이미지 화면을 통해 HTTP 의 헤더 내용을 살펴보자.



클라이언트의 요청에 대한 응답으로

  • 301 Moved 에러코드
  • Location 헤더내에 리다이렉션 할 웹사이트 주소
를 전달한다. 


리다이렉션은 매우 다양한 웹환경에서 필수 기능이다. 웹어플리케이션의 리비젼, 컨텐츠 재배치등과 같이 어떤 변화에 유연하게 대처할 수 있게 해준다.

* 리다이렉션은 물리적으로 다른 서버로도 클라이언트를 안내할 수도 있지만, 동일서버의 다른 컨텐츠로 연결하는 것 역시 가능하다

오늘 내용을 좀 정리해본다.

  1. HTTP 1.1에서 새롭게 추가된 Host 헤더는 가상호스트(Virtual Hosts)를 가능하게 한다.  가상호스트는 하나의 서버에서 여러개의 웹사이트를 운영할 수 있게 해준 고마운 옵션 기능이다. 
  2. 리다이렉션은 가상호스트와는 좀 다르게 하나의 웹사이트가 여러개의 서버를 이용할수 있도록 하는 것이다. 웹어플리케이션의 리비젼이나 컨텐츠 재배치등의 작업에서도 유연하게 서비스를 가능하도록 도와주는 옵션기능이다. 

다음에는 프록시와 게이트웨어 그리고 터널에 대한 포스팅을 해보려 한다.

댓글 없음:

댓글 쓰기