Host 헤더

  • Host 헤더는 HTTP 1.1 버전에서 새로 추가된 헤더
    Host 헤더가 없는 HTTP 1.0 버전에서는 10개의 고객사 홈페이지를 운영하기 위해서는 1대의 물리적인 서버에서 운영 어려움 (거의 불가능)
  • Host 헤더가 없는 형태로 요청이 서버로 전송됨 → 웹서버는 Host 헤더가 요청으로는 어느 회사 홈페이지로 접속했는지 알 수 없음
  • HTTP 1.1 버전에서 Host 헤더가 HTTP 요청에 추가되면서, 흔히 알고 있는 가상 호스팅(Virtual Hosting)이 가능하게 됨
  • 가상 호스팅(Virtual Hosting)으로 IP가 같아도 고객사 도메인을 모두 구분하여 처리 가능
  • Host 헤더에는 클라이언트가 접속을 시도한 웹사이트 도메인 네임의 정보가 표시
  • IP 주소가 아닌 Host 헤더의 값을 가지고 고객사를 구분
  • IP 주소의 의미가 없어지면서 물리적인 한대의 웹서버에 여러개의 웹어플리케이션을 운영
    GET / HTTP/1.1
    Accept: */*
    User-Agent: Mozilla/5.0
    Host: www.Acompany.com

※ 참고

  • HTTP Host 헤더가 없기 때문에 클라이언트가 보낸 헤더의 내용만으로는 구분이 불가능 → IP 주소로 구분 가능
  • 한대의 물리적인 서버에 2개 이상의 NIC 포트가 있는 경우에는 포트 개수만큼의 웹어플리케이션 운영이 가능 → NIC 포트에 각각 다른 IP를 부여해야하기에 많은 IP가 사용됨


가상호스트(Virtual Hosts)

  • 웹 초창기 웹을 이용하는 클라이언트(사용자)는 극히 제한적
  • 웹 초창기 웹 서버의 역할 또한 정보를 제공하는 단순한 수준
  • 현재 웹서비스는 이메일, 웹하드, 쇼핑, 티켓구매, 은행등등 다양해졌고, 클라이언트(사용자)의 스펙트럼도 굉장히 넓어짐
  • 다양한 웹어플리케이션을 동작하기 위해서는 물리적인 웹서버의 수가 많이 필요 -> 많은 물리적인 웹 서버를 운영하는데 어려움이 있음

가상호스트(Virtual Hosts)가 적용 X

  • 10개의 어플리케이션의에는 10개의 서버가 필요
  • 어플리케이션들의 역할이 모두 다르기 때문에 서비스 IP나 도메인을 서로 다르게 설정 필요
  • 10개의 서버를 위치시킬 물리적인 공간이 필요
  • 10개의 웹어플리케이션중에서도 사용량이 적은 서비스의 경우에는 CPU, 메모리등의 서버 자원 낭비가 발생


가상호스트(Virtual Hosts)가 적용 O

  • HTTP 1.1에서는 가상호스트(Virtual Hosts)를 사용하기 위해 Host 헤더 추가
  • 단순한 Host 헤더 하나가 추가되었을 뿐인데, 웹서비스를 제공하는 경우 많은 이익이 생김
  • 가상호스트(Virtual Hosts)는 하나의 물리적인 서버에서 다수개의 웹서비스를 운영이 가능하게 한 기능 → 서비스 도메인(웹주소)은 서로 다르더라도 한개의 IP 주소로 모든 서비스를 가능
  • 웹호스팅 업체들은 HTTP의 가상호스트(Virtual Hosts)기능이 중요함

리다이렉션(Redirection)

  • 가상호스트(Virtaul Hosts)가 하나의 서버에서 복수개의 웹사이트를 운영 가능케 했다면, 리다이렉션은 하나의 사이트가 복수개의 웹서버를 이용할 수 있게 해줌
  • 가상호스트는 복수개를 하나로 모으는것이고, 리다이렉션은 하나를 복수개로 연결하는 것
  • 리다이렉션은 서버가 클라이언트(사용자)를 다른 URI로 전달
  • 리다이렉션은 매우 다양한 웹환경에서 필수 기능으로 웹어플리케이션의 리비젼, 컨텐츠 재배치등과 같이 어떤 변화에 유연하게 대처할 수 있게 해줌
  • 리다이렉션은 물리적으로 다른 서버로도 클라이언트를 안내할 수도 있지만, 동일서버의 다른 컨텐츠로 연결하는 것 역시 가능

리다이렉션(Redirection) 예시

  • 클라이언트가 첫번째 웹 서버의 컨텐츠를 요청
  • 첫번째 웹 서버는 컨텐츠 대신 301 Moved 상태코드를 클라이언트에게 전송 → 응답데이터에는 301 Moved 상태코드와 함께 리다이렉션을 수행할 URI 정보도 포함됨
  • 클라이언트는 3단계와 같이 리다이렉션할 URI로 새로운 접속과 요청을 시도
  • 리다이렉션 URI 주소를 가지고 있는 웹서버는 200 OK 상태코드와 함께 컨텐츠를 전송


http://naver.com 주소로 클라이언트의 요청하면 301 응답 코드와 https://www.naver.com 주소를 리다이렉션(Redirection) 응답으로 전달

  • 301 Moved permanently 응답 코드
  • Location 헤더내에 리다이렉션 할 웹사이트 주소 → https://www.naver.com
    $ curl -vv http://naver.com
    *   Trying 223.130.195.95:80...
    * Connected to naver.com (223.130.195.95) port 80 (#0)
    > GET / HTTP/1.1
    > Host: naver.com
    > User-Agent: curl/7.71.1
    > Accept: */*
    >
    * Mark bundle as not supporting multiuse
    < HTTP/1.1 301 Moved Permanently
    < Server: NWS
    < Date: Sat, 06 Nov 2021 16:34:43 GMT
    < Content-Type: text/html
    < Transfer-Encoding: chunked
    < Connection: keep-alive
    < Location: http://www.naver.com/  # http://naver.com -> http://www.naver.com 전송
    < Vary: Accept-Encoding,User-Agent
    <
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body>
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center> NWS </center>
    </body>
    </html>
    * Connection #0 to host naver.com left intact

'HTTP > HTTP 헤더' 카테고리의 다른 글

HTTP 프로토콜 If-Modified-Since헤더  (0) 2022.06.25
HTTP 프로토콜 If-Match 헤더  (0) 2022.06.25
HTTP 프로토콜 Expires 헤더  (0) 2022.06.25
HTTP 프로토콜 Expect 헤더  (0) 2022.06.25
HTTP 프로토콜 ETag 헤더  (0) 2022.06.25

+ Recent posts