하위 도메인은 어떻게 웹 서버로 전달됩니까?


12

dns는 example.com과 같은 주소를 11.22.33.44와 같은 IP 주소로 확인하지만 하위 도메인이 어떻게 해결되는지에 대해 약간 혼란 스럽습니다. 따라서 http://subdomain.example.com 을 입력하면 실제로 11.22.33.44에 서버로 전달됩니까? 즉, example.com = 11.22.33.44이지만 subdomain.example.com/path = ???

"하위 도메인"과 "경로"는 http 헤더로 전달되거나 URL에 어떤 방식으로 매핑됩니까?

미리 감사드립니다.

편집 : 내가 올바르게 이해한다면 BloodPhilia는 subdomain.example.com이 실제로는 완전히 다른 IP로 해결할 수있는 다른 도메인이라고 말합니다. 그러나 그렇다면 많은 수의 하위 도메인이 있지만 실제로 사이트의 일부 경로에 매핑되는 호스트는 어떻습니까? 예를 들어 blogspot은 수백만 개의 블로그를 호스팅하며 모두 다음과 같습니다.

aaa.blogspot.com
bbb.blogspot.com
...millions more...
yyy.blogspot.com
zzz.blogspot.com

그것들은 분명히 자신의 IP를 가진 하위 도메인이 아니라 aaa.blogspot.com-> www.blogspot.com/aaa와 같은 매핑이지만 어떻게 달성됩니까? 실제로 blogspot.com의 웹 서버로 무엇이 전달됩니까?

답변:


18

도메인, 하위 도메인, 하위 하위 도메인 및 하위 (x) 하위 하위 도메인 (마지막 두 도메인을 만들었습니다!)은 DNS를 통해 최종 사용자와 웹 서버에 대해 동일한 방식으로 처리됩니다.

예를 들어, DNS 서버는 다른 결과를 반환 할 수 있습니다 domain.com, www.domain.com또는 mysite.domain.com.

아마 당신이 알고 있듯이, 세계에는 IP보다 더 많은 도메인이 있습니다.

이 때문에 서버는 올바른 컨텐츠를 제공하기 위해 "호스트 헤더"라고하는 것을 사용합니다.

실제로 요청하는 것은 중요하지 않으며 컴퓨터는 모든 것을 동일하게 취급합니다. DNS에서 연결해야 할 IP를 찾고 연결되면 요청의 일부로 호스트 헤더를 보냅니다. 그런 다음 웹 서버는 다시 보내도록 구성된 컨텐츠를 다시 보냅니다.

테스트 / 학습 / 진단을위한 좋은 도구는 Wfetch 입니다. 여기에서 다운로드 할 수 있습니다 .

다음은 superuser.com에 액세스하는 동안 전송 된 헤더의 예입니다.

대체 텍스트

다음은 IIS (웹 서버)의 호스트 헤더 구성입니다.

대체 텍스트

( 여기 에서 이미지 )

관심이 있다면 Serverfault.com과 Superuser.com은 동일한 IP에 있으며 사이트를 분리하고 다른 컨텐츠를 제공하기 위해 사용되는 기술입니다.

주제에 대한 자세한 내용을 보려면 Virtual Hosting에 대한 Wikipedia 기사읽으십시오 .

(기본 사항을 이해하고 있음을 알고 있지만 Google에 문의하는 사람이 원하는 경우 조금 배울 수 있도록 조금 더 말하면 좋을 것이라고 생각했습니다.)

편집하다

따라서 귀하의 예에 따라 블로그 스팟만큼 큰 누군가가로드 밸런서를 가리키는 와일드 카드 DNS 항목 (와일드 카드 항목이 모든 쿼리에 대해 동일한 결과를 반환 함)을 가지고 있다고 생각합니다.로드 밸런서는 그것을 보냅니다. 호스트 헤더마다 별도의 사이트가 없지만 여러 유형의 호스트 헤더가 구문 분석되는 단일 사이트 / 스크립트를 사용하여 CDN에서 올바른 컨텐츠를 가져온 다음 여러 웹 서버에 제공합니다.

IP 당 단지 수천 개의 항목을 가질 수는 있지만 (아마도 가능하지는 않지만) ip는 몇 개의 서버로 연결되며 각 호스트마다 호스트 헤더가 일치하는 항목이 있습니다.


1
좋은! 참고 사항 : 두 웹 사이트가 IP 주소를 공유한다고해서 반드시 동일한 컴퓨터에서 호스트한다는 의미는 아닙니다. 실제로로드 밸런서는 이러한 헤더를 들여다보고 다른 시스템에 위임 할 수도 있습니다. (수퍼 유저 등은 Stack Overflow의 New York Data Center를 참조하십시오. 실제로 읽지는 않았습니다 ...)
Arjan

@Arjan +1 good point ...로드 밸런서를 언급했지만로드 밸런서의 IP 일 수 있으며 요청을 여러 서버로 분할 할 수 있습니다.
윌리엄 힐섬

1
자세한 정보 및 추가 조사 링크에 대한 답변으로 표시됩니다. 감사!
Joshua Frank

6

실제로 두 도메인의 IP 주소가 동일한 경우 서버는 브라우저를 사용하여 요청 된 도메인을 지정합니다. 좋아요 :

GET / HTTP/1.1
Host: data.stackexchange.com

3

하위 도메인은 올바른 단어가 아닙니다. 일반적으로 하위 도메인은 자체 도메인이므로 sub.example.com은 먼저 DNS로 전달됩니다.이 하위 도메인에 대한 특정 레코드가 없으면 요청이 최상위 도메인의 IP로 전달됩니다. (example.com) 해당 서버에서 요청이 다시 이루어지고 서버가 그에 따라 작동합니다.

즉, example.com에 대한 요청은 sub.example.com에 대한 요청과 실제로 다르지 않습니다.


아마도 여기서 중요한 것을 이해하지 못하는 것 같습니다. 내 질문을 편집하고 명확하게하겠습니다. 감사.
Joshua Frank

당신이 경우 건가요 sub.example.com하지 결의의 IP 주소를 수행 example.com사용될 것입니다? 브라우저가 그렇게하지 않는다고 생각합니다. (와일드 카드 DNS 레코드가 없다면 하위 도메인이 실제로 해결 될 것입니다.)
Arjan

1

Subdomain.example.com은 11.22.33.44로 확인되지 않습니다. 질문의 목적 상 일반적으로 자체 DNS A 레코드가 있으며 다른 주소로 확인됩니다.

하위 도메인을 상위 도메인과 동일한 주소로 확인하고 여전히 다른 페이지를 서버에 배치 할 수 있지만, 그렇게하면 동일한 웹 서버에서 두 사이트를 모두 호스트하고 서버 구성에서 계정을 만들어야합니다. 이를 설명하는 방법은 실행중인 웹 서버 종류에 따라 다릅니다.


1
내 blogspot 예에서 "xyz.blogspot.com"에는 전용 dns 항목이 없으므로 dns는 "blogspot.com"을 찾아 11.22.33.44에서 찾을 것입니다. 그러나 전체 URL "xyz.blogspot.com"을 호스트 필드로 보내며 구문 분석하고 xyz 페이지를 브라우저로 보내는 것은 서버에 달려 있습니까?
Joshua Frank

네 맞습니다.
Joel Coehoorn

nslookup dummy.example.com수익률 server can't find dummy.example.com— 위와 어떻게 일치합니까? (@Joshua의 의견의 예는?)
Arjan

죄송합니다. 하위 도메인에 대한 A 레코드가 여전히 필요합니다. 원하는 경우 동일한 IP를 제공 할 수 있습니다.
Joel Coehoorn

그런 다음 다시 혼란스러워합니다. 수백만 개의 xyz.blogspot.com 하위 도메인이있는 경우 모두 A 레코드를 가질 수 없으므로 라우팅은 어떻게 수행됩니까? 그리고 A 레코드 구성은 서버 측입니다. URL이 주어지면 xyz가 적절한 하위 도메인인지 또는 서버 측 매핑 된 것인지 클라이언트가 어떻게 알 수 있는지에 관심이 있습니다. 특히, x.domain.com과 y.domain.com이 같은 서버에 있다는 것을 알고 있거나 URL을 보면 알 수 없기 때문에 잠시 동안 IP를 캐시하는 것이 안전합니까?
Joshua Frank
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.