Apache2 รองรับการให้บริการเนื้อหาที่แตกต่างกันขึ้นอยู่กับชื่อโดเมนแม้ว่าโดเมนทั้งหมดเหล่านั้นจะแก้ไขเป็นที่อยู่ IP เดียวกัน แต่ละชื่อโดเมนจะถูกจัดการโดยโฮสต์เสมือนจึงชื่อชื่อตามโฮสต์เสมือน
นี่คือตัวอย่างการกำหนดค่าสำหรับสองโดเมน:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.yourfirstdomain.tld
DocumentRoot /www/yourfirstdomain.tld/
</VirtualHost>
<VirtualHost *:80>
ServerName www.yourseconddomain.tld
DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>
คุณจะพบเอกสารอย่างเป็นทางการในชื่อที่ใช้สนับสนุนโฮสต์เสมือนที่นี่
อย่างไรก็ตามโปรดทราบว่าสิ่งนี้จะใช้ได้กับการเชื่อมต่อ HTTP ธรรมดาเท่านั้นไม่ใช่กับ HTTPS (HTTP ผ่าน SSL): โฮสต์เสมือนที่ใช้ชื่อขึ้นอยู่กับการรู้ว่าต้องการชื่ออะไร แต่ Apache ไม่สามารถรู้ข้อมูลนี้ได้จนกว่าจะเข้ารหัส SSL สร้างการเชื่อมต่อแล้ว
หากคุณต้องการให้การตั้งค่าทำงานกับ HTTPS ด้วยคุณต้องพึ่งพาส่วนขยายของโปรโตคอล SSL ที่เรียกว่าServer Name Indication (SNI) ( RFC4366 ) โดยทั่วไปไคลเอนต์ที่เปิดใช้งาน SNI (เช่นเว็บเบราว์เซอร์) จะเพิ่มข้อมูลข้อความธรรมดาพิเศษเมื่อสร้างการเชื่อมต่อ SSL ที่เข้ารหัสทำให้เซิร์ฟเวอร์ทราบชื่อที่ถูกร้องขอก่อนการเชื่อมต่อ SSL จะพร้อมใช้งาน
เบราว์เซอร์ทั้งหมดยังไม่รองรับ SNI ในช่วงเวลาของการเขียนและตาม Wikipedia คนเหล่านี้จะ:
- Internet Explorer 7 หรือใหม่กว่าบน Windows Vista หรือสูงกว่า (ไม่ทำงานบน XP แม้แต่ IE 8)
- Mozilla Firefox 2.0 หรือใหม่กว่า
- Opera 8.0 หรือใหม่กว่า (ต้องเปิดใช้งานโปรโตคอล TLS 1.1)
- Opera Mobile อย่างน้อยรุ่น 10.1 เบต้าบน Android
- Google Chrome (Vista หรือสูงกว่า, XP บน Chrome 6 หรือใหม่กว่า, OS X 10.5.7 หรือสูงกว่าบน Chrome 5.0.342.1 หรือใหม่กว่า)
- Safari 2.1 หรือใหม่กว่า (Mac OS X 10.5.6 หรือสูงกว่าและ Windows Vista หรือสูงกว่า)
- Konqueror / KDE 4.7 หรือใหม่กว่า
- MobileSafari ใน Apple iOS 4.0 หรือใหม่กว่า
- เบราว์เซอร์เริ่มต้น Android บน Honeycomb (v3.x) หรือใหม่กว่า
- Windows Phone 7
- MicroB บน Maemo
การโฮสต์หลายโฮสต์แบบเสมือนที่ใช้ชื่อโฮสต์ HTTPS ต้องให้คุณเปิดใช้งาน mod_ssl และเพิ่มการกำหนดค่าที่คล้ายกันในตัวอย่างด้านบน:
Listen 443
NameVirtualHost *:443
# Accept connections for these vhosts from non-SNI clients
# Clients without SNI will be handled by the first defined vhost.
# If you only want SNI-enabled client, put on instead
SSLStrictSNIVHostCheck off
<VirtualHost *:443>
ServerName www.yourfirstdomain.tld
DocumentRoot /www/yourfirstdomain.tld/
</VirtualHost>
<VirtualHost *:443>
ServerName www.yourseconddomain.tld
DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>
โปรดจำไว้ว่าการใช้ SSL คุณจะต้องซื้อใบรับรอง SSL สำหรับโดเมนของคุณหรือเพื่อสร้างใบรับรองที่ลงชื่ออัตโนมัติและกำหนดค่า Apache ให้ใช้สำหรับการเชื่อมต่อ SSL