Apache2 hỗ trợ phục vụ các nội dung khác nhau tùy thuộc vào tên miền, ngay cả khi tất cả các tên miền đó giải quyết cùng một địa chỉ IP. Mỗi tên miền được xử lý bởi một máy chủ ảo , do đó, máy chủ ảo dựa trên tên .
Đây là một cấu hình mẫu cho hai miền:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.yourfirstdomain.tld
DocumentRoot /www/yourfirstdomain.tld/
</VirtualHost>
<VirtualHost *:80>
ServerName www.yourseconddomain.tld
DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>
Bạn sẽ tìm thấy tài liệu chính thức về hỗ trợ máy chủ ảo dựa trên tên ở đây .
Tuy nhiên, xin lưu ý rằng điều này sẽ chỉ hoạt động với các kết nối HTTP đơn giản, không phải với HTTPS (HTTP qua SSL): các máy chủ ảo dựa trên tên dựa vào việc biết tên nào đang được yêu cầu, nhưng thông tin này không thể được biết bởi Apache cho đến khi SSL được mã hóa kết nối được thiết lập.
Nếu bạn cũng cần thiết lập hoạt động với HTTPS, bạn cần dựa vào tiện ích mở rộng cho giao thức SSL có tên là Chỉ định tên máy chủ (SNI) ( RFC4366 ). Về cơ bản, các máy khách hỗ trợ SNI (ví dụ: trình duyệt web) thêm thông tin văn bản thuần túy khi thiết lập kết nối SSL được mã hóa, cho phép máy chủ biết tên được yêu cầu trước khi kết nối SSL sẵn sàng.
Tất cả các trình duyệt chưa hỗ trợ SNI. Tại thời điểm viết và theo Wikipedia, những người này làm:
- Internet Explorer 7 trở lên, trên Windows Vista trở lên (không hoạt động trên XP, thậm chí IE 8)
- Mozilla Firefox 2.0 trở lên
- Opera 8.0 trở lên (phải bật giao thức TLS 1.1)
- Opera Mobile ít nhất là phiên bản 10.1 beta trên Android
- Google Chrome (Vista trở lên, XP trên Chrome 6 trở lên, OS X 10.5.7 trở lên trên Chrome 5.0.342.1 trở lên)
- Safari 2.1 trở lên (Mac OS X 10.5.6 trở lên và Windows Vista trở lên)
- Konqueror / KDE 4.7 trở lên
- MobileSafari trong Apple iOS 4.0 trở lên
- Trình duyệt mặc định của Android trên Honeycomb (v3.x) hoặc mới hơn
- Điện thoại Windows 7
- MicroB trên Maemo
Lưu trữ một số máy chủ ảo dựa trên tên HTTPS có thể truy cập được yêu cầu bạn kích hoạt mod_ssl và thêm một cấu hình tương tự như trong ví dụ trên:
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>
Hãy nhớ rằng việc sử dụng SSL yêu cầu bạn phải mua chứng chỉ SSL cho tên miền của mình - hoặc để tạo một số chứng chỉ được ký tự động và định cấu hình Apache để sử dụng chúng cho các kết nối SSL.