HTTP 완벽가이드 - 5. 배포와 관리
5부 발행/배포
18장 웹 호스팅
- 웹 호스팅
- 콘텐츠 리소스를 저장, 중개, 관리하는 일의 통칭
- 호스팅 업체
- 서버와 웹 사이트 관리 프로그램을 대여
- 다양한 등급의 보안/리포트/사용 편의를 제공
18.1 호스팅 서비스
- 직접 서버 구축 시 장비/공간 및 도메인 등록, 네트워크 대역폭 구매 위한 기술/시간 필요
- 호스팅 서비스는 물리적 장비(공간/냉난방/연결)에서 총체적인 웹 호스팅까지 다양하게 제공됨
- 기능 예: 다국어 지원, 전자상거래 보안 결제 등
18.2 가상 호스팅
- 한 대의 컴퓨터에서 여러 고객의 가상 사이트를 호스팅 가능
- 비용/공간/관리 용이
- 복제 서버 더미(=서버 팜) 만들고 부하 분산 가능
- 최종 사용자는 가상 호스팅 여부 구분할 수 없어야
-
종류
명칭 상세 URL 경로 이용 각 가상 사이트에 서로 다른 URL 경로 할당해 구분 포트번호 이용 사이트마다 다른 포트번호 할당해 분리된 서버 인스턴스가 요청을 처리 IP주소 이용 - 사이트마다 다른 IP주소 할당 + IP 주소를 하나의 장비에 연결
- IP 주소 부족 문제 발생 가능
- 클라이언트가 상대주소 이용 시 식별 불가Host 헤더 이용 HTTP/1.1의 Host 헤더로 가상사이트 식별 가능
과거에는 일부 클라이언트/서버가 미지원했으나 현재는 거의 모든 브라우저가 지원 - Host 헤더
- 정의
RFC 2068
에 정의된 HTTP/1.1 요청헤더로 대부분의 클라이언트가 구현
- 문법
- 원본 URL에 있는 요청 리소스에 대한 호스트 및 포트번호를 기술
Host = "Host" ":" 호스트[ ":"포트]
- 사용규칙
- 포트 미기술 시 해당 스킴의 기본 포트 사용
- URL에 IP주소 존재 시 Host 헤더는 동일 주소 포함해야
- URL에 호스트 명 존재 시 Host 헤더는 동일 호스트명 포함해야
- URL에 복수 호스트 존재 시 Host 해더에 해당 호스트명이 가리키는 IP 주소 기술 불가
=> 가상 호스트 서버 이용 시 문제 발생 가능 - 클라이언트가 특정 프록시 서버 이용 시 Host 헤더에 원 서버의 호스트명/포트 기술해야
=> 미기술 시 프록시/원 서버 오작동 가능 - 클라이언트는 모든 요청 메세지에 Host 헤더 기술해야
- 웹 프록시는 요청 전달 전 요청 메세지에 Host 헤더 추가해야
- HTTP/1.1 웹 서버는 Host 헤더 없는 HTTP/1.1 요청 수신시 400 상태코드로 응답해야
- 누락
- 과거에는 일부 브라우저가 Host 헤더 전송하지 않았으나 현재는 모든 주요 브라우저가 전송
- 해석 규칙
- HTTP 요청 메시지에 전체 URL에 기술된 경우 => HOST 헤더 값 무시하고 URL 사용
- HTTP 요청 메시지에 URL 호스트명 미기술 + 요청에 Host 헤더 존재 => 호스트명과 포트를 Host 헤더에서 취득
- 위 단계에서 호스트 해석 실패 시 응답코드 400(Bad Request) 반환
- 프록시
- 일부 오래된 브라우저 버전은 프록시 사용 시 Host 헤더에 원 서버 아닌 프록시 이름을 전송하기도
- 정의
18.3 안정적인 웹 사이트 만들기
- 웹 사이트 장애 상황
- 서버 다운
- 트래픽 폭증 => 속도 급감/정지
- 네트워크 장애/손실
- 미러링된 서버 팜
- 상호 식별/대체 가능하도록 설정된 웹 서버들의 집합
- 한 곳에 문제 발생 시 다른 곳에서 대신 콘텐츠 제공 가능
- 보통 미러링 된 서버는 계층적
- HTTP 리다이렉션
- DNS 리다이렉션
- CDN (콘텐츠 부산 네트워크)
- 특정 콘텐츠의 분산을 목적으로 하는 단순한 네트워크
- 네트워크 노드는 서버/대리서버/프록시 서버가 될 수 있음
- 대리 캐시
- 원 서버를 대신해 미러링 된 웹 서버처럼 콘텐츠 요청 대신 수용 가능
- 미러링 서버와 달리 전체 콘텐츠가 아닌 클라이언트가 요청하는 콘텐츠만 저장
- 원 서버에 대리 서버의 콘텐츠를 업데이트해줄 의무는 없음
- ‘미리 가져오기’ 기능 내장된 대리 서버도 존재
- CDN이 대리 서버보다 캐시를 계층화하기 더 어려움 ???
- 프록시 캐시
- 대리 서버와 달리 어떤 웹 서버 요청이든 다 수용 가능
(프록시 캐시와 원 서버 간 연동/IP주소합의 불필요) - 대리 서버 사용 시 프록시 캐시의 콘텐츠는 요청이 있을 때만 저장
=> 원 서버 콘텐츠의 정확한 복제 보장 불가 - 어떤 프락시는 요청 많이 받는 콘텐츠를 미리 로딩하기도
- 레이어2/레이어3 장비가 중간에서 웹 트래픽 가로채 처리하기도
(가로채기 설정은 모든 요청이 물리적으로 캐시를 거치도록 설정 가능하지에 따라 달라짐)
- 대리 서버와 달리 어떤 웹 서버 요청이든 다 수용 가능
18.4 웹 사이트 빠르게 만들기
- 서버 팜이나 분산/캐시 프록시 이용해 콘텐츠 분산 시 전송시간 단축 가능
- 콘텐츠 압축 인코딩 시 속도 개선 가능