Study

[HTTP 완벽 가이드] 18장 : 웹 호스팅

이웃비 2021. 2. 1. 10:59

이 장에서는 웹 호스팅 서비스의 가장 중요한 속성 몇 가지와 그것들이 어떻게 HTTP 애플리케이션과 상호작용하는지 설명한다

 


 

1 .호스팅 서비스

 

죠의 컴퓨터 가게 온라인과 메리의 골동품 경매를 크기가 큰 웹 사이트라고 가정해보자. 죠와 메리가 직접 자체 서버를 구매하고 서버 소프트웨어를 직접 유지보수하는 대신, 죠와 메리에게 대여할 수 있는 고성능 웹 서버들로 구성된 랙을 아이린의 ISP가 가지고 있다.

 죠는 아이린의 ISP가 구매해 유지보수하고 있는 전용 웹 서버를 임대한다. 아이린 ISP는 대량으로 서버 장비를 구매할 수 있으며 안정적이고 검증되었으며 비용이 저렴한 장비를 선택할 수 있다.

 

2. 가상  호스팅

2.1 호스트 정보가 없는 가상 서버 요청

 

만약 http://www.joes-hardware.com/index.html을 요청하면, 브라우저는 www.joes-hardware.com/ 에 연결을 하지만, HTTP/1.0 요청은 호스트 명에 대해 별다른 언급없이 "GET/index.htm"서버가 여러 개의 사이트를 가상 호스팅하고 있으면, 사용자가 어떤 가상 웹 사이트로 접근하려고 하는것인지 아는 데 필요한 정보가 충분하지 않다.

 

2.2 가상 호스팅 동작하게 하기

 

  • URL 경로를 통한 가상 호스팅 - 공용 서버에 있는 각 가상 사이트에 서로 다른 URL 경로를 할당해서 각각을 강제로 구분할 수 있다.
  • 포트번호를 통한 가상 호스팅 - 경로 명을 변경하는 대신, 웹 서버에 각각 다른 포트번호를 할당할 수 있다.
  • ip주소를 통한 가상 호스팅 - 각 가상 웹 사이트에 유일한 ip주소를 한 개 이상 부여한다
  • HOST 헤더를 통한 가상 호스팅 - 브라우저와 서버 개발자들은서버가 원 호스트명을 받아 볼수있게 HTTP를 확장했다. 모든 요청에 호스트명(그리고 포트)을 Host 확장 헤더에 기술해서 전달한다.

2.3 HTTP/1.1 Host 헤더

 

  • 문법과 사용 방법
Host = "Host" ":" 호스트[":"포트]
  • Host 헤더의 누락 - 아직 사용되고 있는 몇몇 낡은 브라우저들은 Host 헤더를 보내지 않는다.
  • Host 헤더 해석하기 - 모든 웹 서버는 HTTP/1.1을 통해 오는 리소스를 결정하려면 다음과 같은 규칙을 사용해야 한다
    1. HTTP 요청 메시지에 전체 URL이 기술되어 있으면, Host 헤더에 있는 값은 무시하고 URL을 사용한다
    2. HTTP 요청 메시지에 있는 URL 에 호스트 명이 기술되어 있지 않고 요청에 Host헤더가 있으면, 호스트 명과 포트를 Host 헤더에서 가져온다.
    3. 1단계나 2단계에서 호스트를 결정할 수 없으면 클라이언트에 400 Bad Request 응답을 반환한다.
  •  HTTP 헤더와 프락시 - 프락시를 사용하도록 구성할 때 버전이 오래된 애플이나 포인트캐스트 클라이언트는 실수로 원 서버의 이름이 아닌 프락시의 이름을 Host 헤더에 담아 전송한다

 

3. 안정적인 웹 사이트 만들기 

 

3.1 미러링 된 서버 팜

 

  • 서버 팜은 서로 대신할 수 잇고 식별할 수 있게 설정된 웹 서버들의 집합니다. 서버팜의 서버에 잇는 콘텐츠들은 한 곳에 문제가 생기면 다른 한 곳에서 대신 전달할 수 있게 미러링할 수 있다. 
  • 미러링된 서버 팜에서, 마스터 원 서버는 복제 원 서버에 콘텐츠를 보낼 책임이 있다. 
  • 미러링 된 웹 서버에는 다른 위치에 있는 콘텐츠와 정확히 같은 복제본이 있다. 
  • 마스터 서버는 클라이언트에게 콘텐츠를 제공하면서 복제 서버들에게 콘텐츠를 퍼트리는 일을 한다.
  • 클라이언트의 요청이 특정 서버로 가는 두 가지 방법
    1. HTTP 리다이렉션 - 콘텐츠에 대한 URL은 마스터 서버의 IP를 가리키고, 마스터 서버는 요청을 받는 즉시 복제 서버로 리다이렉트 시킨다
    2. DNS 리다이렉션 - 콘텐츠의 URL은 네 개의 IP주소를 가리킬 수 있고, DNS 서버는 클라이언트에게 전송할 IP주소를 선택할 수 있다.

 

3.2 콘텐츠 분산 네트워크

 

콘텐츠 분산 네트워크는 특정 콘텐츠의 분산을 목적으로 하는 단순한 네트워크이다. 네트워크의 노드는 서버, 대리서버, 혹은 프락시 서버가 될 수 있다.

 

3.3 CDN의 대리 캐시

 

  • 대리 캐시는 복제 원 서버를 대신해 사용될 수 있다.
  • 대리서버는 리버스 프락시라고도 불리며, 웹 서버처럼 콘텐츠에 대한 요청을 받는다
  • 대리 서버는 보통 수요에 따라서 동작한다
  • 대리 서버는 원 서버의 전체 콘텐츠를 복사하지 않는다
  • CDN이 대리 서버보다 캐시를 계층화하기 더 어렵다 

 

3.4 CDN의 프락시 캐시

  • 프락시 캐시는 어떤 웹 서버 요청이든지 다 받을 수 있다.

  • 프락시 캐시의 콘텐츠는 요청이 있을 때만 저장될 것이고 원본 서버 콘텐츠를 정확히 복제한다는 보장이 없다

  • 레이어2 혹은 레이어3 장비가 중간에서 웹 트래픽을 가로채 처리하기도 한다

  • 가로채기 설정은, 클라이언트와 서버 사이의 모든 HTTP 요청이 물리적으로 캐시를 거치게 네트워크 설정을 할 수 있는지에 따라 달라진다.

 


출처 : 데이빗 골리 외 4인HTTP 완벽 가이드 :웹은 어떻게 동작하는가이응준 , 정상일 옮김, 인사이트, 2014