เซิร์ฟเวอร์เป็นเพียงเครื่องที่มีซอฟต์แวร์เว็บเซิร์ฟเวอร์ (เช่น nginx, apache เป็นต้น)
ไม่จำเป็น. เซิร์ฟเวอร์ คือ ระบบคอมพิวเตอร์ที่ใช้ในการ ให้บริการ ระบบอื่น (ไคลเอนต์) ที่มีเนื้อหา ข้อมูลที่ประมวลผล (หรือเพียงแค่ได้รับจากแหล่งอื่น) และส่งกลับไปยังไคลเอนต์
อาจเป็นเว็บเซิร์ฟเวอร์ หากให้บริการเนื้อหาผ่านโปรโตคอล HTTP หรือเซิร์ฟเวอร์ฐานข้อมูล หากเก็บข้อมูลและอนุญาตให้จัดการข้อมูลในลักษณะเชิงสัมพันธ์ (SQL) หรือไม่เชิงสัมพันธ์ หรือเซิร์ฟเวอร์ DNS หากให้บริการข้อมูล เกี่ยวกับชื่อโฮสต์และที่อยู่ IP ผ่านโปรโตคอล DNS และอื่นๆ
เมื่อเราโฮสต์เว็บไซต์ในบริการโฮสติ้ง เช่น GoDaddy หรือบริการคลาวด์ พวกเขามีซอฟต์แวร์เว็บเซิร์ฟเวอร์สำหรับทุกแอปพลิเคชันที่ใช้งานหรือจะมีซอฟต์แวร์เว็บเซิร์ฟเวอร์เพียงตัวเดียวสำหรับเครื่อง (เซิร์ฟเวอร์) และทุกแอปพลิเคชันใช้งาน หรือเรา (ไคลเอ็นต์) ) ต้องตั้งค่าซอฟต์แวร์เว็บเซิร์ฟเวอร์หรือไม่
มันขึ้นอยู่กับ. บางเครื่องมีเครื่องเสมือน (หรือที่คล้ายกัน) พร้อมเว็บเซิร์ฟเวอร์ที่ติดตั้งไว้ล่วงหน้า เช่น Apache และคุณ "เท่านั้น" ต้องกำหนดค่าเหล่านี้ให้ถูกต้องสำหรับแอปพลิเคชันของคุณ อื่นๆ (AWS EC2) จัดเตรียมเครื่องเสมือนธรรมดา และคุณต้องติดตั้งและกำหนดค่าบริการหรือแพ็คเกจใดๆ (รวมถึงเว็บเซิร์ฟเวอร์) ที่คุณอาจต้องการ
เซิร์ฟเวอร์สามารถมีจำนวน `n' ของซอฟต์แวร์เว็บเซิร์ฟเวอร์ได้หรือไม่
ใช่. เซิร์ฟเวอร์เดียวกันสามารถโฮสต์เครื่องมือเว็บเซิร์ฟเวอร์ต่างๆ ได้ (เช่น Apache และ Nginx สำหรับแอปพลิเคชันที่แตกต่างกัน) หรือแม้แต่อินสแตนซ์ที่แตกต่างกันของเทคโนโลยีเว็บเซิร์ฟเวอร์เดียวกัน (เช่น ผ่านคอนเทนเนอร์) หรือเครื่องมือเว็บเซิร์ฟเวอร์เดียวที่จัดการหลายแอปพลิเคชัน (อาจใช้โฮสต์เสมือน)
ในระเบียน DNS ระเบียนของโดเมนแอปพลิเคชันแต่ละรายการชี้ไปที่ที่อยู่ IP ของเซิร์ฟเวอร์หรือที่อยู่ IP ของเว็บเซิร์ฟเวอร์หรือไม่
ควรชี้ไปที่ที่อยู่ IP ใดก็ตามที่สามารถกำหนดเส้นทางและเข้าถึงได้จากภายนอก และ "เชื่อมโยง" กับเว็บเซิร์ฟเวอร์ การตั้งค่าอย่างง่ายอาจเป็นเครื่องเสมือนที่มีที่อยู่ IP เดียวและเว็บเซิร์ฟเวอร์ที่รับฟังที่อยู่ IP นั้น แต่เว็บเซิร์ฟเวอร์อาจรับฟังที่อยู่อื่นภายใน เช่น 127.0.0.1 และใช้เทคนิคบางอย่าง (เช่น NAT) เพื่อรับคำขอ HTTP ที่มีที่อยู่ IP ของ VM เป็นที่อยู่ปลายทาง และอื่น ๆ
หากโดเมนแอปพลิเคชันทั้งหมดในเซิร์ฟเวอร์เดียวชี้ไปที่ที่อยู่ IP เดียวกัน คำขอจะถูกส่งไปยังแอปพลิเคชันเฉพาะอย่างไร
สามารถทำได้หลายวิธี ขั้นแรก คุณสามารถมีกระบวนการที่แตกต่างกันในการฟังที่อยู่ IP เดียวกันแต่ในพอร์ตที่แตกต่างกัน ตราบเท่าที่พอร์ตแตกต่างกันไม่มีข้อขัดแย้ง - http://www.example.com:80 จะเข้าถึงเว็บเซิร์ฟเวอร์ (หรืออินสแตนซ์ของเว็บเซิร์ฟเวอร์) อื่นที่ไม่ใช่ http://www.example.com:8080. ด้วยการใช้พอร์ตที่แตกต่างกันและเชื่อมโยงแต่ละพอร์ตเข้ากับกระบวนการหรือ "อินสแตนซ์" ของกระบวนการ (เช่น โฮสต์เสมือน) แต่ละคำขอจะถูกส่งต่อไปยังแอปพลิเคชันที่เหมาะสม
แก้ไข
พยายามตอบคำถามเพิ่มเติมในความคิดเห็น
จะเกิดอะไรขึ้นหากมีการปรับใช้แอปพลิเคชันหลายตัวบนเซิร์ฟเวอร์ที่ใช้ร่วมกันแทนที่จะเป็น VM เนื่องจากทุกคนต้องการพอร์ตเป็น 443 (พอร์ตเริ่มต้น) หากแอปพลิเคชันใช้ HTTPS คำขอจะถูกส่งอย่างไร และที่อยู่ IP ของระเบียน DNS ของโดเมนจะชี้ไปที่อะไร
หากแอปพลิเคชั่นหลายตัวฟังบนพอร์ตเดียวกันและ IP เดียวกัน การจัดการทราฟฟิกประเภทอื่นสามารถทำได้ ตัวอย่างเช่น สมมติว่า IP เดียวกันเชื่อมโยงกับสามแอปพลิเคชัน:
app1.example.com - พอร์ต 443
app2.example.com - พอร์ต 443
app3.example.com - พอร์ต 443
คำขอ HTTP ไปยังที่อยู่ IP และพอร์ตเดียวกันถูกเปลี่ยนเส้นทางไปยังแอปพลิเคชันที่ถูกต้องอย่างไร วิธีหนึ่งคือการใช้ ส่วนหัวของโฮสต์. หากเบราว์เซอร์ต้องการติดต่อ app1.example.com เบราว์เซอร์จะส่งคำขอ HTTP ไปยัง IP และพอร์ตเดียวกันนั้นโดยตั้งค่าส่วนหัวของโฮสต์เป็น "app1.example.com"พร็อกซีย้อนกลับจะรับคำขอนั้น อ่านค่าของส่วนหัวของโฮสต์ และเปลี่ยนเส้นทางคำขอนั้นไปยังกระบวนการที่เกี่ยวข้องกับ "app1.example.com" แม้ว่ากระบวนการนั้นจะฟังบน IP และพอร์ตเดียวกันกับเว็บเซิร์ฟเวอร์อื่นๆ
อีกแนวทางหนึ่งขึ้นอยู่กับการใช้เครื่อง (VM, แบร์เมทัล - ไม่สำคัญ) ที่มีที่อยู่ IP หลายรายการ หากเครื่องเดียวกันมีที่อยู่ IP หลายรายการ ก็สามารถโฮสต์แอปพลิเคชันต่างๆ บนพอร์ตเดียวกันแต่มีที่อยู่ต่างกันได้ โดยไม่ต้องใช้เคล็ดลับส่วนหัว HTTP