← กลับไปยังบทความทั้งหมด

การโฮสต์เสมือน วิธีการจัดการหลายโดเมนบนเซิร์ฟเวอร์เดียว

สรุปใจความสำคัญ

  • การโฮสต์เสมือนช่วยให้เซิร์ฟเวอร์เครื่องเดียวสามารถรองรับได้หลายโดเมนเนม
  • การโฮสต์แบบ Name-based ใช้ HTTP Host header ในการแยกแยะเว็บไซต์
  • การโฮสต์แบบ IP-based กำหนดให้หนึ่งเว็บไซต์ต่อหนึ่งที่อยู่ IP
  • SNI (Server Name Indication) ถูกพัฒนาขึ้นเพื่อแก้ปัญหา SSL/TLS ในการโฮสต์แบบ Name-based

การโฮสต์เสมือน (Virtual Hosting) คือวิธีการที่ช่วยให้เซิร์ฟเวอร์เครื่องเดียว (หรือกลุ่มของเซิร์ฟเวอร์) สามารถรองรับและจัดการชื่อโดเมนได้หลายชื่อพร้อมกัน โดยแต่ละโดเมนจะมีการจัดการแยกจากกัน วิธีนี้ช่วยให้เซิร์ฟเวอร์สามารถแบ่งปันทรัพยากร เช่น หน่วยความจำ (RAM) และรอบการทำงานของหน่วยประมวลผล (CPU) ได้อย่างมีประสิทธิภาพ โดยไม่จำเป็นต้องให้ทุกบริการที่ให้บริการใช้ชื่อโฮสต์เดียวกัน แม้ว่าคำนี้มักจะถูกใช้ในบริบทของเว็บเซิร์ฟเวอร์ แต่หลักการของการโฮสต์เสมือนสามารถนำไปประยุกต์ใช้กับบริการอินเทอร์เน็ตอื่นๆ ได้เช่นกัน

การประยุกต์ใช้ในการโฮสต์เว็บแบบใช้ร่วมกัน

หนึ่งในการประยุกต์ใช้ที่แพร่หลายที่สุดคือ การโฮสต์เว็บแบบใช้ร่วมกัน (Shared Web Hosting) ซึ่งมีราคาถูกกว่าการเช่าเซิร์ฟเวอร์ส่วนตัว (Dedicated Server) เนื่องจากลูกค้าหลายรายสามารถใช้เซิร์ฟเวอร์เครื่องเดียวกันได้ นอกจากนี้ องค์กรเดียวอาจต้องการใช้หลายชื่อโดเมนบนเครื่องเดียวกันเพื่อให้ชื่อเหล่านั้นสะท้อนถึงบริการที่แตกต่างกัน แทนที่จะระบุถึงตำแหน่งที่ตั้งของเซิร์ฟเวอร์

ประเภทของการโฮสต์เสมือน

การโฮสต์เสมือนแบ่งออกเป็นสองประเภทหลักตามวิธีการที่เซิร์ฟเวอร์ใช้ระบุว่าควรส่งเนื้อหาของเว็บไซต์ใดให้แก่ผู้ใช้:

1. การโฮสต์เสมือนแบบอิงตามชื่อ (Name-based Virtual Hosting)

การโฮสต์แบบอิงตามชื่อจะใช้ชื่อโฮสต์ที่ส่งมาจากไคลเอนต์ (เช่น เว็บเบราว์เซอร์) เพื่อระบุเว็บไซต์ที่ต้องการ วิธีนี้ช่วยประหยัดที่อยู่ IP และลดภาระในการบริหารจัดการ

  • กลไกการทำงาน: ต้องอาศัยเว็บเบราว์เซอร์ที่รองรับ HTTP/1.1 ซึ่งจะส่ง Host HTTP header ไปพร้อมกับคำขอ เพื่อให้เซิร์ฟเวอร์ที่โฮสต์หลายไซต์ภายใต้ IP เดียวกันสามารถส่งเนื้อหาของไซต์ที่ถูกต้องกลับไปได้
  • ตัวอย่าง: หากเซิร์ฟเวอร์มี IP เดียวกันแต่รองรับทั้ง www.example.com และ www.example.net เมื่อมีการขอข้อมูลจาก www.example.com เซิร์ฟเวอร์จะดึงไฟล์จากไดเรกทอรีหนึ่ง และหากขอจาก www.example.net จะดึงจากอีกไดเรกทอรีหนึ่ง
  • ข้อจำกัด: ปัญหาหลักคือการใช้งานร่วมกับ SSL/TLS เนื่องจากขั้นตอนการทำ Handshake เกิดขึ้นก่อนที่ชื่อโฮสต์จะถูกส่ง อย่างไรก็ตาม ปัญหานี้ได้รับการแก้ไขด้วยส่วนขยาย Server Name Indication (SNI) ซึ่งช่วยให้ไคลเอนต์ส่งชื่อโฮสต์ตั้งแต่เริ่มการเชื่อมต่อ (ยกเว้นในเบราว์เซอร์รุ่นเก่ามาก เช่น Internet Explorer บน Windows XP)

2. การโฮสต์เสมือนแบบอิงตาม IP (IP-based Virtual Hosting)

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

  • กลไกการทำงาน: เว็บเซิร์ฟเวอร์จะถูกกำหนดค่าให้มีอินเทอร์เฟซเครือข่ายหลายตัว หรือมีหลาย IP บนอินเทอร์เฟซเดียว เซิร์ฟเวอร์จะใช้ที่อยู่ IP ที่ได้รับคำขอเพื่อตัดสินใจว่าจะส่งเนื้อหาของเว็บไซต์ใด
  • ข้อดี: ไม่มีความจำเป็นต้องพึ่งพาข้อมูลจากไคลเอนต์ จึงไม่มีปัญหาเรื่องความเข้ากันได้ของโปรโตคอล
  • ข้อเสีย: ต้องใช้ที่อยู่ IP จำนวนมาก ซึ่งเพิ่มภาระในการบริหารจัดการและส่งผลต่อการขาดแคลนที่อยู่ IPv4

การผสมผสานระหว่าง Name-based และ IP-based

ในทางปฏิบัติ เซิร์ฟเวอร์อาจใช้ทั้งสองวิธีร่วมกัน เช่น การมีหลาย IP และในแต่ละ IP นั้นก็รองรับหลายชื่อโดเมน เทคนิคนี้มีประโยชน์อย่างยิ่งเมื่อใช้ SSL/TLS ร่วมกับใบรับรองแบบ Wildcard (เช่น .example.com และ .example.net) ซึ่งอาจต้องใช้ IP แยกกันสำหรับโดเมนหลักที่ต่างกัน แต่ใช้ IP เดียวกันสำหรับซับโดเมนภายใต้โดเมนหลักนั้นๆ

คำถามที่พบบ่อย

การโฮสต์เสมือนแตกต่างจากการโฮสต์แบบใช้ร่วมกัน (Shared Hosting) อย่างไร?

การโฮสต์เสมือนเป็น 'เทคโนโลยี' หรือ 'วิธีการ' ที่ทำให้เซิร์ฟเวอร์หนึ่งเครื่องรองรับหลายโดเมนได้ ส่วน Shared Hosting เป็น 'รูปแบบธุรกิจ' ที่นำเทคโนโลยีการโฮสต์เสมือนมาใช้เพื่อให้ลูกค้าหลายรายแชร์ทรัพยากรเซิร์ฟเวอร์เดียวกันเพื่อลดค่าใช้จ่าย

ทำไมการโฮสต์แบบ Name-based ถึงมีปัญหาเรื่อง SSL/TLS ในตอนแรก?

เพราะในกระบวนการ SSL/TLS Handshake เซิร์ฟเวอร์ต้องส่งใบรับรอง (Certificate) ให้ไคลเอนต์ก่อนที่ไคลเอนต์จะส่งชื่อโฮสต์ (Host header) ทำให้เซิร์ฟเวอร์ไม่รู้ว่าต้องส่งใบรับรองของเว็บไซต์ใด

ข้อดีของการโฮสต์แบบ IP-based คืออะไร?

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

SNI คืออะไรและช่วยได้อย่างไร?

SNI (Server Name Indication) เป็นส่วนขยายของ TLS ที่อนุญาตให้ไคลเอนต์ระบุชื่อโฮสต์ที่ต้องการเชื่อมต่อตั้งแต่ขั้นตอนเริ่มต้นการทำ Handshake ทำให้เซิร์ฟเวอร์สามารถเลือกใบรับรอง SSL ที่ถูกต้องมานำเสนอได้แม้จะใช้ IP เดียวกันสำหรับหลายเว็บไซต์