답변:
HTTP 1.1 프로토콜의 일부입니다.
특히 HTTP 1.1 프로토콜에는 클라이언트가 액세스하려고하는 특정 서버의 웹 사이트를 지정하는 "host :"라는 헤더가 포함되어 있습니다.
따라서 snoopy.net과 woodstock.org가 모두 192.0.32.10을 공유하고 브라우저가 http://snoopy.net/doghouse
특정 http 요청 에서 콘텐츠를 가져 오려고 하면 다음과 같습니다.
GET /doghouse HTTP/1.1
Host: snoopy.net
원하는 URL이 http://woodstock.org/seeds
요청이면
GET /seeds HTTP/1.1
Host: woodstock.org
두 경우 모두 컴퓨터와 서버의 포트 80 사이에 tcp 소켓이 있습니다. 서버는 호스트 헤더에 따라 /var/www/snoopy.net 또는 /var/www/woodstock.org/에서 컨텐츠를 가져 오는 것을 알고 있습니다.
쿠키에 대한 다른 헤더와 브라우저 유형 및 허용되는 컨텐츠와 같은 다른 것들이 있지만 "호스트"헤더는 구체적으로 웹 서버가 원하는 가상 웹 사이트를 알 수있게하는 것입니다.
RFC2616에 더 있습니다 .
이것이 바로 https 사이트에 자체 IP 주소가 있어야하는 이유이기도합니다. http 트랜잭션 전에 SSL 키 교환 및 인증서 확인이 수행되므로 http 서버는 "woodstock에 대한 인증서를 제공하는 것을 알 수 없습니다. 192.0.32.10 포트 443에서 https 연결을 수신 할 때 org "또는"snoopy.net "
편집하다
** 의견에 Grawity는 서버가있는 웹 사이트에 액세스를 시도하는 등 사용자 알고 허용 TLS 사양에서 SSL의 확장이 있음을 지적하고, 그래서 대부분의 최신 웹 브라우저는, 이러한 확장이 필수가 조금 너무 강한.
모든 최신 브라우저가 "호스트 :"헤더라고하는 요청과 함께 전송하는 것이 있습니다.
이 페이지에 대한 Firefox의 실제 요청은 다음과 같습니다.
호스트 : superuser.com 사용자 에이전트 : Mozilla / 5.0 (Windows; U; Windows NT 6.0; en-US; rv : 1.9.1.7) Gecko / 20091221 Firefox / 3.5.7 (.NET CLR 3.5.30729) 수락 : text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8 수락 언어 : en-us, en; q = 0.5 수락 인코딩 : gzip, 수축 수락 문자 집합 : ISO-8859-1, utf-8; q = 0.7, *; q = 0.7 연결 유지 : 300 연결 : 연결 유지
보시다시피
호스트 : superuser.com비트는 해당 웹 사이트를 식별합니다.
특정 문제에 관해서는 특정 호스팅 회사가 구성을 요청하는 방법을 읽어야합니다.
단일 IP 주소 / 호스트에서 둘 이상의 도메인 / 하위 도메인을 호스팅하는 기술을 가상 호스트 라고 합니다 . http get 요청에는 웹 서버가 요청을 특정 가상 도메인과 일치시킬 수있는 요청의 도메인 이름이 포함됩니다.
하나의 외부 IP로 내부에 여러 개의 물리적 호스트가있는 경우 요청을 올바른 시스템 / 내부 IP 주소로 전달하도록 리버스 프록시 를 설정하는 것이 좋습니다.
웹 서버의 기능을 일반적으로 '가상 호스트'라고합니다. dns 항목이 해당 IP 주소 (다른 답변에서 언급 한 것처럼)를 가리 키도록 요청하면 서버는 요청 된 호스트가 무엇인지에 따라 다른 사이트를 서버합니다.
다른 상자를 가리키는 한. 쿼리를 먼저 받으려면 대부분의 웹 서버에서 리디렉션을 구성 할 수 있습니다. 하위 도메인에 대해 이야기하는 경우 각 하위 도메인을 다른 IP 주소로 지정하기 만하면됩니다.
즉, host.com-> IP 1, www.host.com-> IP 2 및 mail.host.com-> IP 3
보다 구체적인 답변을 원하면 실행중인 운영 체제에 어떤 웹 서버 소프트웨어가 있는지 말해야합니다.
ServeFault가이 질문에 더 적합한 곳이라는 것을 알 수 있습니다.