[TIL] HTTP : The Definitive Guide "p408 ~ p419"

시윤·3일 전

[TIL] Two Pages Per Day

목록 보기
152/153
post-thumbnail

Chapter 18. Web Hosting

(해석 또는 이해가 잘못된 부분이 있다면 댓글로 편하게 알려주세요.)


✏️ 요약


Preface

  • Web Hosting
    • 콘텐츠 리소스를 저장, 중개, 관리하는 공동의 의무
    • 웹 서버의 가장 주요한 기능 중 하나
  • Hosting Services
    • 별도의 하드웨어와 소프트웨어를 갖출 필요 없이 웹 사이트 관리 서비스를 사용할 수 있다
    • 보안, 리포트 등 편의 기능을 갖추고 있다
    • 비용, 성능, 안정성 측면에서 이점을 볼 수 있다
  • 챕터에서 다룰 내용
    • Virtual Hosting이 HTTP에 미치는 영향
      • Virtual Hosting : 동일한 서버에 서로 다른 웹 사이트를 호스팅하는 것
    • 웹 사이트를 안정성 있게 운용하는 방법
    • 웹 사이트 로딩을 빠르게 하는 방법

Hosting Services

  • 대량의 하드웨어를 통해 적은 비용으로 안정성 있는 서버를 제공하는 서비스


Virtual Hosting

  • 하나의 컴퓨팅 자원을 여러 고객이 공유하는 호스팅의 형태
  • 유저 관점에서는 일반 호스팅과 가상 호스팅을 구분할 수 없다
  • 장점 : 트래픽 양이 적은 웹 사이트를 위해 웹 서버 하나를 통째로 빌리지 않아도 된다 (비용 및 자원 절약)

Virtual Server Request Lacks Host Information

  • HTTP/1.0 : 가상 호스팅된 웹 사이트를 식별할 수 있는 수단을 제공하지 않는다
    GET /index.html HTTP/1.0
    User-agent: SuperBrowser v1.3
  • http://www.joes-hardware.com/index.html 에 대한 요청인지 http://www.marys-antiques.com/index.html 에 대한 요청인지 구분할 수 없다
  • Chapter 6에 언급한 것처럼 surrogates와 intercepting proxies에서도 사이트를 식별할 수 있는 추가 정보가 필요하다

Making Virtual Hosting Work

  • HTTP/1.1 : full URL을 통한 요청 라인을 사용할 수 있게 되었지만 레거시 애플리케이션에서는 적용되지 않을 수 있다 -> 4가지 추가적인 수단을 제공
  • URL path : URL에 특수한 path 컴포넌트를 추가하여 구분하는 방법
  • Port number : 각각의 사이트에 서로 다른 포트번호를 부여하는 방법
    • URL에 포트번호를 명시하지 않으면 원본 URL이 정상 동작하지 않는다
    • 거의 사용 X
  • IP address : 각각의 사이트에 서로 다른 IP 주소를 부여하는 방법
    • 컴퓨터 시스템이 부여할 수 있는 Virtual IP의 개수가 제한적이며 IP 자체도 희소 자원이다
    • 로드밸런싱을 위해 복제된 서버가 많을수록 필요한 IP의 개수도 늘어난다
    • 비교적 자주 사용
  • Host header : HTTP/1.1의 Host 헤더를 사용하여 식별하는 방법
    • IP 문제를 해결하면서 사이트를 식별할 수 있다
    • HTTP/1.1에서 사용 가능하다
      GET /index.html HTTP/1.1
      Host: www.joes-hardware.com

HTTP/1.1 Host Headers

  • 표준 : RFC 2068
  • 규격 : Host = “Host” “:” host [ “:” port ]
  • 상세 규칙
    • 포트번호가 포함되어 있지 않은 경우
      • 디폴트 포트번호로 해석한다
    • URL이 IP 주소를 포함한 경우
      • Host에도 동일한 주소가 포함되어야 한다
    • URL이 호스트명을 포함한 경우
      • Host에는 동일한 호스트명이 담겨야 한다
      • Host에는 호스트명에 대응하는 IP 주소를 포함할 필요가 없다 (가상 호스팅의 경우 IP 주소가 동일할 수 있기 때문)
      • Host에는 호스트명의 alias를 포함할 수 없다 (가상 호스팅에서 동작하지 않을 수 있기 때문)
    • 클라이언트가 프록시 서버를 사용하는 경우
      • Host에 원본 서버의 포트 번호를 반드시 포함해야 한다
    • 웹 클라이언트는 반드시 모든 요청에 Host 헤더를 포함해야 한다
    • 웹 프록시는 반드시 Host 헤더를 포워딩해야 한다
    • HTTP/1.1 웹 서버는 Host 헤더 필드가 누락된 경우 400 상태 코드를 반환해야 한다
  • 해석 방법
    • 요청 메시지에 절대 URL이 포함된 경우 Host 헤더는 무시된다
    • 호스트가 URL에 포함되지 않고 Host 헤더에 포함된 경우 헤더의 값을 채택한다
    • 유효한 호스트를 판단할 수 없는 경우 400 응답을 반환한다
profile
틈틈이 두 페이지씩 원서 읽기

0개의 댓글