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-соединений.