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 під назвою Індикація імені сервера (SNI) ( RFC4366 ). В основному клієнти з підтримкою SNI (наприклад, веб-браузери) додають додаткову просту текстову інформацію під час встановлення зашифрованого SSL-з'єднання, що дозволяє серверу знати ім'я, яке запитується до того, як SSL-з'єднання буде готове.
Усі браузери ще не підтримують SNI. На момент написання та згідно Вікіпедії, ці:
- 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.