เมื่อคุณเริ่มใช้บริการโฮสต์ออนไลน์ คุณอาจอยากรู้ว่าจะโฮสต์หลายเว็บไซต์บนเซิร์ฟเวอร์เดียวได้อย่างไร แม้เรื่องนี้จะดูซับซ้อนในตอนแรก แต่เมื่อศึกษาเพิ่มเติมและใช้คู่มือเทคนิคที่เหมาะสม คุณจะพบว่าทำได้ไม่ยาก
เว็บเซิร์ฟเวอร์หลายประเภทให้บริการฟรี เป็นโอเพนซอร์ส และใช้งานกันอย่างแพร่หลายทั่วโลก อย่างไรก็ตาม ก่อนที่จะอธิบายวิธีโฮสต์หลายเว็บไซต์บนเซิร์ฟเวอร์เดียว เราควรทำความเข้าใจก่อนว่าเว็บเซิร์ฟเวอร์คืออะไรและทำงานอย่างไร
เว็บเซิร์ฟเวอร์คืออะไร?
Web Server ทำหน้าที่จัดเก็บและให้บริการเนื้อหาของเว็บไซต์ ไม่ว่าจะเป็นข้อความ รูปภาพ วิดีโอ หรือข้อมูลของแอปพลิเคชัน ผู้ใช้ที่ต้องการเนื้อหาเหล่านี้จะเข้าถึงได้ผ่าน Web Server โดยตรง ตัวอย่างที่พบบ่อยที่สุดคือเว็บเบราว์เซอร์ ซึ่งจะส่งคำขอข้อมูลจากเว็บไซต์ทุกครั้งที่ผู้ใช้คลิกลิงก์หรือดาวน์โหลดไฟล์
Web Server สื่อสารกับเว็บเบราว์เซอร์ผ่าน โปรโตคอลการถ่ายโอนไฮเปอร์เท็กซ์ (HTTP) เนื้อหาของเว็บเพจส่วนใหญ่เขียนด้วย Hypertext Markup Language (HTML) เนื้อหาอาจเป็นแบบ Static เช่น ข้อความและรูปภาพ หรือแบบ Dynamic เช่น รายการสินค้าที่ลูกค้าเลือกไว้ Web Server ส่วนใหญ่รองรับภาษา การเขียนโปรแกรมฝั่งเซิร์ฟเวอร์ เพื่อฝังตรรกะทางธุรกิจไว้ในการสื่อสาร และให้บริการเนื้อหาแบบ Dynamic โดยทั่วไปจะรองรับภาษาอย่าง Active Server Pages (ASP), JavaScript, PHP, Python และ Ruby
เว็บเซิร์ฟเวอร์ทำงานอย่างไร?
Web Server ทำงานบนโมเดล ไคลเอนต์-เซิร์ฟเวอร์ ในโครงสร้างนี้ ลูกค้า ส่งคำขอทรัพยากรหรือบริการไปยัง เซิร์ฟเวอร์.
Web Server ประมวลผลคำขอจาก Client ผ่านขั้นตอนต่าง ๆ ดังนี้:
- เมื่อผู้ใช้ต้องการโหลดเนื้อหาเข้าสู่เว็บไซต์ เว็บเบราว์เซอร์จะส่งคำขอเข้าถึง (คำขอ HTTP) ผ่านทางอินเทอร์เน็ต
- เว็บเบราว์เซอร์จะค้นหา IP address ของเว็บไซต์ที่ร้องขอ โดยแปลง URL ของหน้าเว็บด้วย ระบบชื่อโดเมน (DNS) หรือค้นหาจาก cache ที่มีอยู่ กระบวนการนี้จะช่วยระบุตำแหน่งของ web server ซึ่งเป็นที่จัดเก็บไฟล์ทั้งหมดของเว็บไซต์
- ในขั้นตอนนี้ web server จะรับคำขอ HTTP และประมวลผลผ่าน เซิร์ฟเวอร์ HTTP.
- เมื่อ server ของ HTTP ยอมรับคำขอแล้ว จะทำการค้นหาไฟล์บน server เพื่อดึงข้อมูลที่เกี่ยวข้อง
- web server จะส่งไฟล์ของเว็บไซต์กลับไปยังเบราว์เซอร์ที่ส่งคำขอมา จากนั้นผู้ใช้จะเห็นเนื้อหาของเว็บไซต์
อย่างไรก็ตาม หาก HTTP server ไม่พบหรือประมวลผลไฟล์ที่ร้องขอไม่ได้ เว็บเบราว์เซอร์จะแสดงข้อความแสดงข้อผิดพลาด เมื่อคุณเข้าใจแนวคิดหลักของ web server แล้ว การเรียนรู้วิธีโฮสต์ web server หลายตัวบน server เดียวก็ทำได้ไม่ยาก
โฮสต์หลายเว็บไซต์บนเซิร์ฟเวอร์เดียว: Apache
หากต้องการโฮสต์มากกว่าหนึ่งเว็บไซต์บน server เดียว คุณควรใช้ไฟล์ virtual host ของ Apache เพื่อระบุว่าจะใช้ domain ใด หนึ่งในวิธีที่ใช้สำหรับการจัดการคำขอของเว็บไซต์เรียกว่า โฮสต์เสมือนตามชื่อเมื่อมีผู้เข้าชมเว็บไซต์ของคุณ คำขอจะถูกส่งไปยัง server ซึ่งจะพิจารณาว่าต้องส่งไฟล์ของเว็บไซต์ใดโดยอิงจากชื่อ domain เทคนิคนี้ช่วยให้คุณโฮสต์หลายเว็บไซต์บน server เดียวด้วย IP เดียวกัน บทความนี้จะอธิบายวิธีตั้งค่าไฟล์ virtual host สำหรับแต่ละ domain ของคุณ ก่อนจะไปในรายละเอียด โปรดจำไว้ว่าคุณต้องเข้าสู่ระบบด้วยบัญชี root
อ่านเพิ่มเติม: “การโฮสต์แบบ Linux กับ Windows: แบบไหนเหมาะกับคุณ?”
ขั้นตอนที่ 1: สร้างไดเรกทอรีสำหรับแต่ละเว็บไซต์
ติดตั้ง apache2 ก่อนด้วยคำสั่งนี้
สำหรับระบบที่ใช้ Debian
apt install apache2 -y
สำหรับระบบที่ใช้ CentOS
yum install apache2 -y
คุณต้องสร้าง directory สำหรับแต่ละเว็บไซต์ที่ต้องการโฮสต์ (ภายในโฟลเดอร์ /var/www)โดยใช้ domain.com และ domain2.com เป็นชื่อ domain ของคุณ
mkdir -p /var/www/domain.com/public_html
mkdir -p /var/www/domain2.com/public_html
ขั้นตอนที่ 2: ตั้งค่าสิทธิ์โฟลเดอร์
chmod -R 755 /var/www
ขั้นตอนที่ 3: สร้างหน้า Index
เพื่อให้หน้าหลักแสดงผลได้ถูกต้อง คุณต้องตรวจสอบให้แน่ใจว่าได้สร้างไฟล์ index.html ไว้สำหรับแต่ละ domain แล้ว คุณอาจใส่เนื้อหาง่ายๆ เช่น ทดสอบสำหรับ domain.com ในไฟล์นี้
vim /var/www/domain.com/public_html/index.html
ทดสอบสำหรับ domain.com
เมื่อเสร็จแล้วให้บันทึกและออกจากไฟล์ด้วยปุ่ม หลบหนี แล้วพิมพ์: wq
คุณสามารถใช้คำสั่งด้านล่างเพื่อทำขั้นตอนเดิมทั้งหมดซ้ำสำหรับ domain ที่สอง
vim /var/www/domain2.com/public_html/index.html
ขั้นตอนที่ 4: คัดลอกไฟล์ Config สำหรับแต่ละเว็บไซต์
คุณต้องคัดลอกไฟล์ config ค่าเริ่มต้นสำหรับแต่ละไซต์ เพื่อให้มีสำเนาต้นฉบับไว้ใช้สร้างไซต์ใหม่ในอนาคต
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/domain.com.conf
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/domain2.com.conf
ขั้นตอนที่ 5: แก้ไขไฟล์ Config สำหรับแต่ละเว็บไซต์
อย่างน้อยที่สุด ให้แก้ไขและเพิ่มบรรทัดที่ไฮไลต์ไว้ภายใน <VirtualHost *:80> และ </VirtualHost> แท็ก.
โปรดทราบว่า ServerAlias คือชื่อแทนของโดเมนคุณ ในกรณีนี้และส่วนใหญ่ คุณจะใส่ www ไว้หน้าชื่อโดเมน เพื่อให้ผู้อื่นเข้าถึงไซต์ได้ทั้งแบบ www และไม่มี www (ServerName).
vim /etc/apache2/sites-available/domain.com.conf

กด Quit และ Save อีกครั้งด้วย wqคุณต้องทำขั้นตอนนี้ซ้ำสำหรับ domain2.com.conf ไฟล์ อย่าลืมอัปเดต ServerName, ServerAlias และ DocumentRoot สำหรับโดเมนที่สอง
อ่านเพิ่มเติม: “Apache vs NGINX”
ขั้นตอนที่ 6: เปิดใช้งานไฟล์ Config
เซิร์ฟเวอร์จะอ่านไฟล์ 000-default.conf เป็นค่าเริ่มต้น แต่ในขั้นตอนก่อนหน้า เราสร้างไฟล์ config ใหม่สำหรับแต่ละโดเมนแล้ว ดังนั้นเราต้องปิดใช้งานไฟล์ค่าเริ่มต้น แล้วเปลี่ยนมาใช้ไฟล์ที่สร้างขึ้นใหม่แทน
a2dissite 000-default.conf
คุณสามารถให้เซิร์ฟเวอร์ชี้ไปยังโดเมนของคุณได้ โดย enable ไฟล์ .conf ที่สร้างขึ้นใหม่ทุกไฟล์
a2ensite domain.com.conf
a2ensite domain2.com.conf
ทีนี้ รีสตาร์ท Apache เพื่อให้การเปลี่ยนแปลงมีผล
systemctl restart apache2
ขั้นตอนที่ 7: ตรวจสอบการตั้งค่า Apache
หลังจากเริ่ม Apache แล้ว คุณสามารถตรวจสอบว่า config ทำงานถูกต้องหรือไม่ โดยแก้ไขไฟล์ /etc/host ไฟล์ บนคอมพิวเตอร์ของคุณ หรือ DNS ของโดเมนคุณ.
เมื่อตั้งค่าทุกส่วนเรียบร้อยแล้ว ให้เปิดเบราว์เซอร์และเข้าไปที่เว็บไซต์ของคุณ เพื่อดูหน้า index.html ที่สร้างไว้ในขั้นตอนที่ 3
อ่านเพิ่มเติม: On-Premises vs. Cloud (In Thai: On-Premises เทียบกับ Cloud)
โฮสต์หลายเว็บไซต์บนเซิร์ฟเวอร์เดียว: IIS
IIS (Internet Information Services) รองรับการโฮสต์เว็บไซต์ได้หลายสิบหรือหลายร้อยไซต์บนเซิร์ฟเวอร์เดียว คุณสามารถโฮสต์หลายไซต์พร้อมกันได้ โดยทั้งหมดรับและตอบสนองคำขอบน พอร์ต TCPเดียวกัน แต่ IIS Manager แสดงให้เห็นว่าคุณสามารถโฮสต์ไซต์เพิ่มเติมได้โดยไม่ต้องผูกกับพอร์ตอื่น เช่น 8080 ส่วนนี้จะอธิบายวิธีโฮสต์หลายเว็บไซต์บน IIS เซิร์ฟเวอร์เดียวกัน และผูกทุกไซต์ไว้กับพอร์ตและ IP address เดียวกัน หรือ IP address ที่ต่างกันก็ได้
วิธีติดตั้ง IIS บนเซิร์ฟเวอร์ Windows
เมื่อคุณติดตั้ง IIS บน Windows ระบบจะสร้าง Default Website ว่างขึ้นมาโดยอัตโนมัติ และรับคำขอบน พอร์ตมาตรฐานของเว็บ HTTP - TCP 80ในทางเทคนิค ไซต์ของเราถูกผูกไว้กับพอร์ต TCP/80 เราต้องพิมพ์ชื่อ IIS เซิร์ฟเวอร์ ("http://web-srv1") หรือ IP address ("http://192.168.1.100") ในเบราว์เซอร์เพื่อเปิดไซต์นี้
ขั้นตอนที่ 1: การผูก Binding กับ IIS Website
IIS เซิร์ฟเวอร์บน Windows Server ช่วยให้คุณโฮสต์หลายเว็บไซต์ได้ แต่ IIS จะกระจาย HTTP request ได้ถูกต้องก็ต่อเมื่อแต่ละเว็บไซต์มีค่าที่ระบุตัวตนได้อย่างไม่ซ้ำกัน IIS website มีแอตทริบิวต์ 3 รายการที่ประกอบกันเป็นค่าไม่ซ้ำกันสำหรับแต่ละไซต์ ดังนี้
- หมายเลขพอร์ต TCP
- ที่อยู่ IP
- host header (hostname)
ข้อมูลของเว็บไซต์ที่โฮสต์อยู่ถูกเก็บไว้ใน ServerBindings แอตทริบิวต์ของ IIS Metabase และมีรูปแบบดังนี้ IP:พอร์ต:ชื่อโฮสต์. ดังนั้น หากต้องการโฮสต์หลายเว็บไซต์บนเซิร์ฟเวอร์เดียว (พอร์ตและ IP address เดียวกัน) คุณต้องใช้ Host header ที่ไม่ซ้ำกัน.
คุณอาจสงสัยว่า Host header คืออะไร? Host header คือส่วนหนึ่งของคำขอ HTTP ที่ส่งไปยังเซิร์ฟเวอร์ เพื่อระบุว่าคำขอนั้นส่งถึงเว็บไซต์ใด ดังนั้นเราจึงต้องกำหนด Host header นี้ในฝั่งของเว็บเซิร์ฟเวอร์ด้วย โปรดตรวจสอบให้แน่ใจว่า DNS มีระเบียนที่ถูกต้องซึ่งตรงกับ hostname และ IP address ของ IIS เว็บเซิร์ฟเวอร์
สมมติว่าคุณมีเว็บไซต์ที่รันอยู่บน IIS เซิร์ฟเวอร์และรับฟังที่พอร์ต 80 แล้วจะทำอย่างไรเมื่อต้องการผูกเว็บไซต์ที่สองเข้ากับพอร์ตเดิม?
ขั้นตอนที่ 2: การผูกเว็บไซต์ที่สองใน IIS
ใน Internet Information Service (IIS) Manager ให้สร้างเว็บไซต์ใหม่ผ่านหน้าต่าง Add Website และตั้งชื่อว่า TestSite โดยเว็บไซต์นี้จะอยู่ที่ C:\inetpub\TestSite ในขั้นตอนนี้ยังไม่ต้องระบุ hostname
หลังจากคัดลอกเนื้อหาของเว็บไซต์ไปยัง C:\inetpub\TestSite แล้ว ให้เปิด Internet Information Service (IIS) Manager จากนั้นคลิกที่ hostname ของเซิร์ฟเวอร์เพื่อเพิ่มเว็บไซต์ ซึ่งจะเปิด wizard ขึ้นมาให้คุณ


หลังจากคลิก Ok คุณจะเห็นข้อความเตือนว่าไม่สามารถใช้ binding *:80 กับทั้งสองเว็บไซต์พร้อมกัน


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

โฮสติ้ง Windows VPS
ดูแพ็กเกจ Windows VPS ราคาประหยัดของเรา พร้อมฮาร์ดแวร์ประสิทธิภาพสูง เลเทนซีต่ำ และ Windows ฟรีให้คุณเลือก!
รับ Windows ฟรีของคุณการโฮสต์หลายเว็บไซต์บน IIS ด้วย Host Headers
คุณต้องตั้งชื่อ (Host Name) ใหม่ให้กับ IIS เว็บไซต์ที่สองเพื่อสร้าง binding ที่ไม่ซ้ำกัน โดยให้คลิกขวา TestSite และเลือก แก้ไข Bindings. เลือก binding ที่ต้องการ แล้วคลิก แก้ไข.
ดังที่เห็นในภาพต่อไปนี้ เราต้องระบุ hostname ที่ไม่ซ้ำกันซึ่งผู้ใช้จะเข้าถึง ในบทแนะนำนี้เราใช้ TestSite ดังนั้นให้กรอก TestSite ในช่อง Hostname

คุณสามารถใช้ command prompt เพื่อตั้งค่า IIS site binding ได้ หากใช้ IIS 7 หรือใหม่กว่า คุณจะเห็นผลลัพธ์ประมาณนี้หลังจากรันคำสั่งสำหรับตั้งค่า IIS Site binding:
C:\Windows\System32\inetsrv\appcmd.exe set site /site.name:testsite /+bindings.[protocol='http',bindingInformation='*:80:testsite']
เช่นเดียวกับเว็บไซต์แรก คุณสามารถสตาร์ทเว็บไซต์ที่สองได้เช่นกัน

ในขั้นตอนนี้ คุณต้องเพิ่ม DNS alias ให้กับเซิร์ฟเวอร์ (A หรือ CNAME) โดยชี้ไปยัง IP address หรือ hostname ของ IIS เว็บเซิร์ฟเวอร์ของคุณ หากใช้ Active Directory domain คุณต้องสร้างระเบียน DNS บน domain controller IIS ช่วยให้คุณสร้าง CNAME record สำหรับชื่อ TestSite ใน console DNS (dnsmgmt.msc) และตั้งชื่อโดเมนของ IIS server เป็น FQDN target host

คุณสามารถสร้าง record DNS นี้ผ่าน PowerShell ด้วยคำสั่งต่อไปนี้:
Add-DnsServerResourceRecordCName -HostNameAlias web-srv1.woshub.com -Name testsite -ZoneName woshub.com
ลองเปิด http://TestSite ในเบราว์เซอร์ หากทำทุกขั้นตอนถูกต้อง เว็บไซต์จะเปิดขึ้นมาได้ทันที

Linux Hosting ที่ใช้งานได้ทันที
ต้องการวิธีที่ดีกว่าในการโฮสต์เว็บไซต์และเว็บแอปของคุณ? กำลังพัฒนาโปรเจกต์ใหม่? หรือแค่ไม่อยากใช้ Windows? นั่นคือเหตุผลที่เรามี Linux VPS
เริ่มต้นใช้งาน Linux VPS ของคุณการรันหลายเว็บไซต์ด้วย IP Address ต่างกันบน IIS
ต่อไปเราจะพูดถึงการรันสองเว็บไซต์บน IIS webserver ด้วย IP address ที่แตกต่างกัน ขั้นแรก คุณต้องเพิ่ม VLAN interface แยกต่างหากบน Windows Server หรือกำหนด IP address เพิ่มเติม (alias) ให้กับ NIC
ในบทแนะนำนี้ server มี IP address หลักเป็น 192.168.13.100 และเราจะเพิ่ม IP alias 192.168.13.101 บน network adapter เดียวกัน:
Get-NetIPAddress | ft IPAddress, InterfaceAlias, SkipAsSource
New-NetIPAddress –IPAddress 192.168.13.101 –PrefixLength 24 –InterfaceAlias “Ethernet” –SkipAsSource $True
ถัดไป ให้สร้าง A record สำหรับเว็บไซต์ใหม่ของคุณบน DNS server:
Add-DnsServerResourceRecordA -Name NewSite3 -IPv4Address 192.168.13.101 -ZoneName woshub.com -TimeToLive 01:00:00 –CreatePtr
ขั้นตอนที่เหลือคือเปิดการตั้งค่า Site Binding และผูกเว็บไซต์กับ IP address เพิ่มเติมของ host คุณสามารถจัดการ binding ของเว็บไซต์บน IIS server ผ่าน PowerShell โดยใช้ module WebAdministration:
Import-Module WebAdministration
ดูข้อมูลของ IIS sites ทั้งหมดที่มีอยู่พร้อม binding:
Get-IISSite
หรือดูข้อมูลของ site เดียว:
(Get-Website -Name NewSite).bindings.Collection

ใช้คำสั่งต่อไปนี้เพื่อเปลี่ยน binding ของ site นี้ ซึ่งช่วยให้คุณเปลี่ยน IP address, port, หรือชื่อได้:
Set-WebBinding -Name NewSite1 -BindingInformation "192.168.13.101:80:NewSite1" -PropertyName 'Port' -Value '8080'
Set-WebBinding -Name NewSite1 -BindingInformation "192.168.13.101:8080:NewSite1" -PropertyName 'IPAddress' -Value '192.168.13.100'
ใช้คำสั่งนี้เพื่อเพิ่ม binding ใหม่ให้กับ IIS site ที่ต้องการ:
New-IISSiteBinding -Name NewSite1 -BindingInformation "*:9090:" -Protocol http
การลบ binding ทำได้ด้วยคำสั่งต่อไปนี้:
Remove-IISSiteBinding -Name NewSite1 -BindingInformation "*:9090:"
ดังที่เห็นในบทความนี้ คุณสามารถรันหลายเว็บไซต์บน IIS web server ได้ทั้งบน IP address ที่แตกต่างกัน และบน IP address เดียวกันโดยใช้หมายเลข TCP port ที่ต่างกัน
สรุป: การโฮสต์หลายเว็บไซต์บนเซิร์ฟเวอร์เดียว
บทความนี้เน้นแนวคิดพื้นฐานของ server และวิธีโฮสต์หลายเว็บไซต์บน server เครื่องเดียว นอกจากนี้ เรายังมี Linux VPS โซลูชันโฮสติ้งหลายรูปแบบที่ให้คุณรันเว็บไซต์หลายแห่งบน server เครื่องเดียว แผนของ Cloudzy ช่วยลดค่าใช้จ่ายในการดูแล server หลายเครื่อง พร้อมทั้งให้คุณใช้งานบริการของเราได้อย่างคุ้มค่า ยิ่งไปกว่านั้น คุณยังอัปเกรดทรัพยากรของ server ได้ง่าย ทั้ง RAM, พื้นที่จัดเก็บข้อมูล, โปรเซสเซอร์, และแบนด์วิดท์
คำถามที่พบบ่อย
สามารถโฮสต์หลายเว็บไซต์บน Web Server เดียวได้หรือไม่?
หาก server ของคุณมีทรัพยากรเพียงพอ เช่น พื้นที่ HDD, RAM, และพลังประมวลผล CPU คุณสามารถโฮสต์หลายเว็บไซต์ด้วย virtual hosting ได้โดยไม่จำกัดจำนวน
จะรันสองเว็บไซต์บนเซิร์ฟเวอร์เดียวได้อย่างไร?
การโฮสต์หลายเว็บไซต์บน web server เครื่องเดียวเรียกว่า Virtual Server นอกจากนี้ ควรตรวจสอบให้แน่ใจว่า server ที่เลือกมีทรัพยากรเพียงพอสำหรับรองรับปริมาณ traffic และพื้นที่จัดเก็บข้อมูลที่ต้องการ
เซิร์ฟเวอร์ VPS ใช้ทำอะไร?
VPS คือบริการโฮสติ้งที่จัดสรรทรัพยากรเฉพาะ (private) บน server ให้กับคุณ ควรทราบว่า VPS ให้ความปลอดภัยและเสถียรภาพสูงกว่า shared hosting ที่ไม่ได้จัดสรรพื้นที่ server ให้คุณโดยเฉพาะ
ทำไมถึงนิยมใช้ VPS?
VPS hosting ได้รับความนิยมอย่างแพร่หลาย เนื่องจากมีค่าใช้จ่ายต่ำกว่า dedicated hosting และยังให้ความน่าเชื่อถือ ความปลอดภัย และประสิทธิภาพที่ดีกว่า shared hosting