โดเมนย่อยส่งผ่านไปยังเว็บเซิร์ฟเวอร์อย่างไร


12

ฉันรู้ว่า dns แก้ไขที่อยู่เช่น example.com เป็นที่อยู่ IP เช่น 11.22.33.44 แต่ฉันสับสนเล็กน้อยเกี่ยวกับวิธีการแก้ไขโดเมนย่อยดังนั้นเมื่อคุณพิมพ์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

โดเมน, โดเมนย่อย, โดเมนย่อยและ Sub (x) -sub-subomains (ที่สร้างขึ้นสองครั้งล่าสุด!) ได้รับการปฏิบัติในลักษณะเดียวกันโดย DNS กับผู้ใช้และเว็บเซิร์ฟเวอร์

ยกตัวอย่างเช่นเซิร์ฟเวอร์ DNS สามารถส่งกลับผลลัพธ์ที่แตกต่างกันสำหรับdomain.com, หรือwww.domain.com mysite.domain.com

ทีนี้อย่างที่คุณคงทราบกันดีว่ามีหลายโดเมนมากกว่า IP ในโลก

ด้วยเหตุนี้เซิร์ฟเวอร์จึงใช้สิ่งที่เรียกว่า "โฮสต์ส่วนหัว" เพื่อแสดงเนื้อหาที่ถูกต้อง

มันไม่สำคัญว่าคุณจะขออะไรเครื่องของคุณก็จัดการทุกอย่างเหมือนกัน - มันจะค้นหา DNS ที่ IP ควรเชื่อมต่อและเมื่อเชื่อมต่อแล้วมันจะส่งส่วนหัวของโฮสต์เป็นส่วนหนึ่งของคำขอ เว็บเซิร์ฟเวอร์จะส่งเนื้อหาที่กำหนดค่าให้ส่งกลับคืน

เครื่องมือที่ดีสำหรับการทดสอบ / การเรียนรู้ / การวินิจฉัยเป็น WFetch ก็สามารถดาวน์โหลดได้ที่นี่

นี่คือตัวอย่างของส่วนหัวที่ส่งในขณะที่เข้าถึง superuser.com

ข้อความแสดงแทน

นี่คือการกำหนดค่าสำหรับส่วนหัวของโฮสต์ใน IIS (เว็บเซิร์ฟเวอร์):

ข้อความแสดงแทน

(ภาพจากที่นี่ )

หากคุณสนใจ Serverfault.com และ Superuser.com อยู่ใน IP เดียวกันและนี่คือเทคนิคที่ใช้เพื่อแยกไซต์และแสดงเนื้อหาที่แตกต่างกัน

สำหรับการอ่านเพิ่มเติมเกี่ยวกับเรื่องที่คุณอาจต้องการที่จะอ่านบทความวิกิพีเดียเสมือนโฮสติ้ง

(ฉันรู้ว่าคุณเข้าใจพื้นฐาน แต่ฉันคิดว่ามันเป็นการดีที่จะพูดเพิ่มอีกเล็กน้อยเพื่อให้ทุกคนที่ใช้ Google สิ่งนี้อาจเรียนรู้เล็กน้อยหากพวกเขาต้องการ!)

แก้ไข

ดังนั้นตามตัวอย่างของคุณฉันเดาว่าคนที่มีขนาดใหญ่ที่สุดใน blogspot น่าจะมีรายการ wildcard DNS (รายการ wildcard ส่งคืนผลลัพธ์เดียวกันสำหรับการสืบค้นใด ๆ ) ที่ชี้ไปที่ load balancer จากนั้น load balancer จะส่งออกไป ไปยังเว็บเซิร์ฟเวอร์ที่แตกต่างกันซึ่งอาจไม่มีไซต์แยกต่างหากต่อส่วนหัวโฮสต์ แต่แทนที่จะมีไซต์ / สคริปต์เดียวซึ่งที่อยู่ที่พิมพ์ (ส่วนหัวของโฮสต์หรือไม่) ได้รับการแยกวิเคราะห์และดึงเนื้อหาที่ถูกต้องจาก CDN ของพวกเขา

แม้ว่ามันจะเป็นไปได้ (แต่ไม่น่าเป็นไปได้) ที่พวกเขามีเพียงไม่กี่พันรายการต่อไอพี แต่ไอพีนั้นนำไปสู่เซิร์ฟเวอร์สองสามตัวและพวกเขาก็มีรายการสำหรับแต่ละไซต์ที่มีส่วนหัวโฮสต์ที่ตรงกัน


1
ดี! หมายเหตุด้านข้าง: ความจริงที่ว่าเว็บไซต์สองแห่งใช้ที่อยู่ IP ร่วมกันไม่ได้หมายความว่าเว็บไซต์เหล่านั้นมักจะโฮสต์บนเครื่องเดียวกันเสมอ ในความเป็นจริงแล้ว load balancer อาจแอบดูส่วนหัวและมอบหมายให้กับเครื่องอื่น ๆ (สำหรับ Super User et al, ยังเห็นกองมากเกินนิวยอร์ก Data Centerซึ่งฉันไม่ได้จริงๆอ่านตัวเองว่า ... )
Arjan

@Arjan จุดที่ดี +1 ... ฉันพูดถึง load balancer แต่เห็นได้ชัดว่ามันอาจเป็น IP ของ s load balancer (s) และจากนั้นพวกเขาก็แยกคำขอไปยังเซิร์ฟเวอร์จำนวนมาก
William Hilsum

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


ฉันคิดว่าบางทีฉันไม่เข้าใจสิ่งที่สำคัญที่นี่ ให้ฉันแก้ไขและชี้แจงคำถามของฉัน ขอบคุณ
โจชัวแฟรงค์

คุณกำลังบอกว่าหากsub.example.comไม่สามารถแก้ปัญหาexample.comได้จะใช้ที่อยู่ IP ของหรือไม่ ฉันคิดว่าเบราว์เซอร์ไม่ทำเช่นนั้น (เว้นแต่จะมีระเบียน 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 ไปยังเบราว์เซอร์หรือไม่
โจชัวแฟรงค์

ใช่ถูกต้อง.
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 เป็นโดเมนย่อยที่เหมาะสมหรือสิ่งที่แมปฝั่งเซิร์ฟเวอร์ โดยเฉพาะอย่างยิ่งมันปลอดภัยที่จะแคช IP สักครู่หรือเปล่าเพราะคุณรู้ว่า x.domain.com และ y.domain.com อยู่บนเซิร์ฟเวอร์เดียวกันหรือคุณไม่เคยรู้เลยด้วยการดู URL
Joshua Frank
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.