5.1 1대로 멀티 도메인을 가능하게 하는 가상 호스트

HTTP/1.1 에서는 하나의 HTTP 서버에 여러 개의 웹 사이트를 실행할 수 있다. 예를 들어, 웹 호스팅을 제공하고 있는 사업자는 1대의 서버에 여러 고객의 웹 사이트를 넣을 수 있다. 고객마다 다른 도메인을 가지고, 다른 웹 사이트를 실행할 수 있다. 이를 위해 가상 호스트(Virtual Host) 라는 기능을 사용한다. 가상 호스트 기능을 사용하면 물리적으로는 서버가 1대지만 가상으로 여러 대가 있는 것처럼 설정하는 것이 가능하다.

HTTP 를 사용해서 클라이언트가 서버에 엑세스할 때는 www.hackr.jp 와 같은 호스트명이나 도메인명이 주로 사용된다. 인터넷에서 도메인명은 DNS 에 의해서 IP 주소로 변환되고 나서 엑세스하게 된다. 결국 리퀘스트가 서버에 도착한 시점에는 IP 주소를 기준으로 엑세스한다. 이 때 1대의 서버 안에 www.tricorder.jp 이외에 www.hackr.jp 라는 도메인이 있을 경우 어느 쪽에 대한 엑세스인지 알 수 없다.

같은 IP 주소에서 다른 호스트명과 도메인명을 가진 여러 개의 웹 사이트가 실행되고 있는 가상 호스트의 시스템이 있기 때문에, HTTP 리퀘스트를 보내는 경우에는 호스트명과 도메인명을 완전하게 포함한 URI 를 지정하거나, 반드시 Host 헤더 필드에서 지정해야 한다.

www.hackr.jp/login

5.2 통신을 중계하는 프로그램 : 프록시, 게이트웨이, 터널

HTTP 는 클라이언트와 서버 이외에 프록시(Proxy), 게이트웨이(Gateway), 터널(Tunnel) 과 같은 통신을 중계하는 프로그램과 서버를 연계하는 것도 가능하다. 이러한 프로그램과 서버는 그 다음에 있는 다른 서버에 리퀘스트를 중계하고, 그 서버로부터 받은 리스폰스를 클라이언트에 반환하는 역할을 담당한다.

프록시

서버와 클라이언트의 양쪽 역할을 하는 중계 프로그램 으로, 클라이언트로부터의 리퀘스트를 서버에 전송하고 서버로부터의 리스폰스를 클라이언트에 전송한다.

게이트웨이

다른 서버를 중계하는 서버 로, 클라이언트로부터 수신한 리퀘스트를 리소스를 보유한 서버인 것처럼 수신한다. 경우에 따라서는 클라이언트는 상대가 게이트웨이라는 것을 알지 못하는 경우도 있다.

터널

서로 떨어진 두 대의 클라이언트와 서버 사이를 중계하며 접속을 주선하는 중계 프로그램 이다.

5.2.1 프록시

프록시 서버의 기본적인 동작은 클라이언트로부터 받은 리퀘스트를 다른 서버에 전송하는 것 이다. 클라이언트로부터 받은 리퀘스트 URI 를 변경하지 않고 그 다음의 리소스를 가지고 있는 서버에게 보낸다.

리소스 본체를 가진 서버를 오리진 서버(Origin Server) 라고 부른다. 오리진 서버로부터 되돌아온 리스폰스는 프록시 서버를 경유해서 클라이언트에 돌아온다.

Untitled

https://ko.wikipedia.org/wiki/프록시_서버

HTTP 통신을 할 때, 프록시 서버를 여러 대 경유하는 것도 가능하다. 체인과 같이 여러 대 경유해서 리퀘스트와 리스폰스를 중계한다. 중계할 때에는 Via 헤더 필드에 경유한 호스트 정보를 추가해야 한다.

Untitled