1. Virtual Host
- HTTP/1.1에서는 하나의 HTTP 서버에서 여러 개의 웹 사이트를 실행할 수 있음.
- Virtual Host 기능을 사용하면 물리적으로는 서버가 1대이지만 가상으로 여러 대가 있는 것처럼 설정할 수 있음.
- 같은 IP 주소에서 다른 호스트명과 도메인 명을 가진 여러 개의 웹 사이트가 실행되고 있는 Virtual Host 시스템에서는, HTTP Request에 호스트명과 도메인 명을 완전하게 포함한 URI를 지정하거나 반드시 Host 헤더 필드에서 지정해야 함.
2. Proxy, Gateway, Tunnel
- HTTP는 클라이언트와 서버 이외에 프록시, 게이트웨이, 터널과 같이 통신을 중계하는 프로그램과 서버를 연계하는 것도 가능하다.
1) Proxy
- 클라이언트로부터 받은 리퀘스트를 오리진 서버로 보냄. 오리진 서버에서 받은 리스폰스는 프록시 서버를 경유해서 클라이언트로 돌아옴.
- 프록시 서버 여러 대 경유하는 것도 가능하다. 이 때 Via 헤더 필드에 경유한 호스트 정보를 추가해야 한다.
- 프록시 서버 쓰는 이유 : 캐시 사용하기 위해. 특정 리소스에 대한 액세스 제한. 액세스 로그 획득.
- 캐싱 프록시: 리스폰스 중계할 때 프록시 서버 상에 리소스 캐시를 보존해둠.
- 투명 프로시: 리퀘스트와 리스폰스 중계할 때 메시지 변경을 하지 않는 프록시.
2) Gateway
- 게이트웨이의 동작은 프록시와 매우 유사.
- 단, 클라이언트가 HTTP 리퀘스트/리스폰스를 게이트웨이와 주고받으면 게이트웨이는 HTTP 이외의 서버와 HTTP 이외의 프로토콜로 통신할 수 있다.
3) Tunnel
- 터널은 요구에 따라 다른 서버와의 통신 경로를 확립한다. 터널 자체는 HTTP 리퀘스트를 해석하지 않는다.
3. Cache
- 캐시가 있다 하더라도 캐시 유효 기간에 의해서 유효성 검사가 이루어진다.
- 클라이언트에게도 캐시가 있다. 이를 인터넷 임시 파일이라고 한다.