วิธีสร้างหลายเว็บไซต์หลายโดเมนบน IIS Windows Server 2022
หนึ่งในความสามารถที่โดดเด่นของ IIS บน Windows Server 2022 คือการสามารถโฮสต์หลายเว็บไซต์ (Multiple Websites) และหลายโดเมน (Multiple Domains) บน Server เครื่องเดียวได้
ไม่ว่าจะเป็น
เว็บไซต์บริษัท
เว็บไซต์ลูกค้า
เว็บแอปพลิเคชัน
Intranet
API Server
ทั้งหมดสามารถทำงานร่วมกันบน IIS เดียวได้อย่างมีประสิทธิภาพ หากมีการออกแบบ Binding และ Application Pool อย่างถูกต้อง
บทความนี้จะสอนวิธีสร้างหลายเว็บไซต์หลายโดเมนบน IIS แบบมืออาชีพ พร้อมแนวทางที่ใช้จริงในองค์กร
🌐 IIS รองรับหลายเว็บไซต์ได้อย่างไร
IIS ใช้ระบบ
Binding
ในการแยกเว็บไซต์
โดยอ้างอิงจาก
IP Address
Port
Host Header
ตัวอย่าง
comsiam.com
shop.comsiam.com
api.comsiam.com
ทั้งหมดสามารถใช้ IP เดียวกันได้
🔍 โครงสร้างที่แนะนำ
ตัวอย่าง
D:\Website
├── comsiam.com
├── shop.comsiam.com
├── api.comsiam.com
└── intranet
แต่ละเว็บไซต์มีโฟลเดอร์ของตนเอง
🚀 ขั้นตอนที่ 1 สร้างโฟลเดอร์เว็บไซต์
ตัวอย่าง
New-Item D:\Website\comsiam.com -ItemType Directory
New-Item D:\Website\shop.comsiam.com -ItemType Directory
New-Item D:\Website\api.comsiam.com -ItemType Directory
🚀 ขั้นตอนที่ 2 สร้างหน้าเว็บทดสอบ
เว็บไซต์หลัก
<h1>Main Website</h1>
ร้านค้า
<h1>Shop Website</h1>
API
<h1>API Website</h1>
🚀 ขั้นตอนที่ 3 เปิด IIS Manager
เปิด
inetmgr
เลือก
Sites
🚀 ขั้นตอนที่ 4 สร้างเว็บไซต์แรก
คลิก
Add Website
กำหนด
Site Name
comsiam.com
Physical Path
D:\Website\comsiam.com
Port
80
Host Name
comsiam.com
กด
OK
🚀 ขั้นตอนที่ 5 สร้างเว็บไซต์ที่สอง
Site Name
shop.comsiam.com
Physical Path
D:\Website\shop.comsiam.com
Port
80
Host Name
shop.comsiam.com
🚀 ขั้นตอนที่ 6 สร้างเว็บไซต์ที่สาม
Site Name
api.comsiam.com
Physical Path
D:\Website\api.comsiam.com
Port
80
Host Name
api.comsiam.com
🔍 ตรวจสอบ Binding
PowerShell
Get-WebBinding
ตัวอย่าง
*:80:comsiam.com
*:80:shop.comsiam.com
*:80:api.comsiam.com
นี่คือหลักการที่ทำให้หลายเว็บไซต์ใช้ IP เดียวกันได้
🚀 สร้างเว็บไซต์ผ่าน PowerShell
เว็บไซต์หลัก
New-Website `
-Name "comsiam.com" `
-Port 80 `
-HostHeader "comsiam.com" `
-PhysicalPath "D:\Website\comsiam.com"
ร้านค้า
New-Website `
-Name "shop.comsiam.com" `
-Port 80 `
-HostHeader "shop.comsiam.com" `
-PhysicalPath "D:\Website\shop.comsiam.com"
🚀 แยก Application Pool
แนวทางที่แนะนำ
comsiam_pool
shop_pool
api_pool
ไม่ควรใช้
DefaultAppPool
ร่วมกันทุกเว็บไซต์
🚀 สร้าง App Pool
PowerShell
New-WebAppPool "comsiam_pool"
กำหนดให้เว็บไซต์
Set-ItemProperty `
"IIS:\Sites\comsiam.com" `
-name applicationPool `
-value "comsiam_pool"
🌍 ตั้งค่า DNS
ตัวอย่าง
A Record
comsiam.com
→ Public IP
shop.comsiam.com
→ Public IP
api.comsiam.com
→ Public IP
ทุกโดเมนสามารถชี้มาที่ Server เดียวกันได้
🔒 เพิ่ม HTTPS
เพิ่ม Binding
https
กำหนด Certificate
แยกตาม Domain
หรือใช้
Wildcard Certificate
🚨 Host Header ไม่ทำงาน
ตรวจสอบ
DNS
และ
Bindings
🚨 เปิดได้เฉพาะเว็บไซต์แรก
สาเหตุหลัก
Host Header ซ้ำ
หรือ
Host Header ว่าง
ตรวจสอบ
Get-WebBinding
🚨 SSL Error
ตรวจสอบ
HTTPS Binding
และ
Certificate
📊 จำนวนเว็บไซต์ที่ IIS รองรับ
ขึ้นอยู่กับ
CPU
RAM
Storage
Application
ในทางปฏิบัติ
Windows Server 2022 สามารถรองรับได้ตั้งแต่หลักสิบถึงหลักพันเว็บไซต์
หากออกแบบระบบอย่างเหมาะสม
🔒 Best Practices
สำหรับ Windows Server 2022
ควร
① แยก Application Pool ทุกเว็บไซต์
② ใช้ Host Header
③ แยก Web Root
④ เปิด HTTPS ทุกเว็บไซต์
⑤ เปิด Logging
⑥ สำรอง IIS Configuration เป็นประจำ
ทีมงาน comsiam มักกำหนดให้ทุกเว็บไซต์มีโฟลเดอร์และ Application Pool ของตัวเองเสมอ เพราะช่วยลดผลกระทบเมื่อเว็บไซต์ใดเว็บไซต์หนึ่งมีปัญหา
สำหรับองค์กรที่โฮสต์หลายร้อยเว็บไซต์ comsiam แนะนำให้ใช้ Host Header ร่วมกับ Wildcard Certificate และระบบ Monitoring เพื่อให้บริหารจัดการ IIS ได้ง่ายขึ้นในระยะยาว
🎯 สรุป
IIS บน Windows Server 2022 สามารถโฮสต์หลายเว็บไซต์หลายโดเมนบน Server เครื่องเดียวได้อย่างมีประสิทธิภาพ โดยใช้หลักการของ
Binding
และ
Host Header
หากแยก Web Root, Application Pool และ DNS อย่างถูกต้อง ก็สามารถรองรับเว็บไซต์จำนวนมากได้โดยไม่จำเป็นต้องเพิ่ม Server ใหม่