การสร้าง Virtual Hosts บน Apache HTTP Server

การสร้าง Virtual Hosts บน Apache HTTP Server

Apache HTTP Server (Apache HTTPD) เป็นเว็บเซิร์ฟเวอร์ที่ได้รับความนิยมอย่างแพร่หลาย หนึ่งในความสามารถที่สำคัญคือ Virtual Hosts ซึ่งช่วยให้เซิร์ฟเวอร์เพียงเครื่องเดียวสามารถให้บริการเว็บไซต์หลายโดเมนหรือหลายโปรเจกต์ได้พร้อมกัน โดยแยกการตั้งค่าอย่างเป็นระบบ ลดต้นทุน และเพิ่มความยืดหยุ่นในการบริหารจัดการระบบ

บทความนี้จะอธิบายแนวคิด พร้อมขั้นตอนการตั้งค่า Virtual Hosts บน Apache HTTPD แบบลงมือปฏิบัติ (Hands-on) เพื่อให้สามารถนำไปใช้งานจริงได้ทันที

ความหมายของ Virtual Hosts

Virtual Hosts คือกลไกที่ทำให้ Apache สามารถตอบสนองคำขอ (Request) จากหลายโดเมนหรือหลายพอร์ต โดยชี้ไปยังโฟลเดอร์เว็บไซต์ที่แตกต่างกัน แม้จะรันอยู่บน IP Address เดียวกันก็ตาม

รูปแบบที่ใช้งานบ่อย ได้แก่

  • Name-Based Virtual Host – แยกตามชื่อโดเมน (นิยม)

  • IP-Based Virtual Host – แยกตาม IP Address

ในทางปฏิบัติ ปัจจุบันนิยมใช้ Name-Based Virtual Host เนื่องจากประหยัด IP และจัดการง่าย


โครงสร้างไฟล์ที่ควรรู้

ตัวอย่างโครงสร้างมาตรฐานบน Linux (Rocky Linux / AlmaLinux / CentOS / RHEL)

/var/www/

├── site1/
│ └── public_html/
└── site2/
└── public_html/

/etc/httpd/
├── conf/httpd.conf
└── conf.d/
├── site1.conf
└── site2.conf

แนวคิดสำคัญคือ
  • หนึ่งเว็บไซต์ = หนึ่งไฟล์ .conf

  • แยกอ่านง่าย แก้ไขง่าย และเหมาะกับการดูแลระยะยาว


ขั้นตอนที่ 1: สร้างโฟลเดอร์เว็บไซต์

sudo mkdir -p /var/www/site1/public_html
sudo mkdir -p /var/www/site2/public_html

กำหนดสิทธิ์ให้ Apache อ่านได้

sudo chown -R apache:apache /var/www/site1 /var/www/site2
sudo chmod -R 755 /var/www

ขั้นตอนที่ 2: สร้างไฟล์ทดสอบเว็บไซต์

echo "<h1>Welcome to Site 1</h1>" | sudo tee /var/www/site1/public_html/index.html
echo "<h1>Welcome to Site 2</h1>" | sudo tee /var/www/site2/public_html/index.html

ขั้นตอนที่ 3: สร้างไฟล์ Virtual Host

สร้างไฟล์ /etc/httpd/conf.d/site1.conf

<VirtualHost *:80>

      ServerName site1.local
      DocumentRoot /var/www/site1/public_html

<Directory /var/www/site1/public_html>
      AllowOverride All
      Require all granted
</Directory>

      ErrorLog logs/site1_error.log
      CustomLog logs/site1_access.log combined
</VirtualHost>

และไฟล์ /etc/httpd/conf.d/site2.conf

<VirtualHost *:80>
      ServerName site2.local
      DocumentRoot /var/www/site2/public_html

<Directory /var/www/site2/public_html>
      AllowOverride All
      Require all granted
</Directory>

      ErrorLog logs/site2_error.log
      CustomLog logs/site2_access.log combined
</VirtualHost>


ขั้นตอนที่ 4: ทดสอบไฟล์คอนฟิก

sudo apachectl configtest

หากขึ้น

Syntax OK

แสดงว่าการตั้งค่าถูกต้อง


ขั้นตอนที่ 5: รีสตาร์ท Apache

sudo systemctl restart httpd
sudo systemctl enable httpd

ขั้นตอนที่ 6: ทดสอบผ่านเครื่อง Client

ในกรณีทดสอบบนเครื่องเดียวกัน ให้เพิ่มในไฟล์ hosts

127.0.0.1 site1.local
127.0.0.1 site2.local

จากนั้นเปิดเว็บเบราว์เซอร์


สรุป

การสร้าง Virtual Hosts บน Apache HTTPD เป็นทักษะพื้นฐานที่สำคัญสำหรับผู้ดูแลระบบและนักพัฒนาเว็บ ช่วยให้บริหารหลายเว็บไซต์ได้อย่างเป็นระบบ มีความยืดหยุ่นสูง และพร้อมขยายต่อยอดสู่ระบบจริงระดับองค์กร



เขียนและรวบรวมโดย
ฝ่ายวิชาการซิสแอดมินโนว์เลจ
https://www.sysadmin.in.th
25 January 2026