HTTP 완벽가이드 - 5. 배포와 관리

3 분 소요

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 웹 사이트 빠르게 만들기

  • 서버 팜이나 분산/캐시 프록시 이용해 콘텐츠 분산 시 전송시간 단축 가능
  • 콘텐츠 압축 인코딩 시 속도 개선 가능

20장 리다이렉션과 부하 균형

20.1 왜 리다이렉트인가?

20.2 리다이렉트 할 곳

20.3 리다이렉션 프로토콜의 개요

20.4 일반적인 리다이렉션 방법

20.5 프락시 리다이렉션 방법

20.6 캐시 리다이렉션 방법

20.7 인터넷 캐시 프로토콜

20.8 캐시 배열 라우팅 프로토콜

20.9 하이퍼텍스트 캐싱 프로토콜

20.10 추가 정보

21장 로깅과 사용 추적

21.1 로그란 무엇인가?

21.2 로그 포맷

21.3 적중 계량하기

21.4 개인 정보 보호에 대해

21.5 추가 정보