Chapter 18. Web Hosting
(해석 또는 이해가 잘못된 부분이 있다면 댓글로 편하게 알려주세요.)
✏️ 요약
Preface
- Web Hosting
- 콘텐츠 리소스를 저장, 중개, 관리하는 공동의 의무
- 웹 서버의 가장 주요한 기능 중 하나
- Hosting Services
- 별도의 하드웨어와 소프트웨어를 갖출 필요 없이 웹 사이트 관리 서비스를 사용할 수 있다
- 보안, 리포트 등 편의 기능을 갖추고 있다
- 비용, 성능, 안정성 측면에서 이점을 볼 수 있다
- 챕터에서 다룰 내용
- Virtual Hosting이 HTTP에 미치는 영향
- Virtual Hosting : 동일한 서버에 서로 다른 웹 사이트를 호스팅하는 것
- 웹 사이트를 안정성 있게 운용하는 방법
- 웹 사이트 로딩을 빠르게 하는 방법
Hosting Services
- 대량의 하드웨어를 통해 적은 비용으로 안정성 있는 서버를 제공하는 서비스

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

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