Apache2 obsługuje serwowanie różnych treści w zależności od nazw domen, nawet jeśli wszystkie te domeny rozpoznają ten sam adres IP. Każda z nazw domen jest obsługiwana przez host wirtualny , a zatem host wirtualny oparty na nazwie .
Oto przykładowa konfiguracja dla dwóch domen:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.yourfirstdomain.tld
DocumentRoot /www/yourfirstdomain.tld/
</VirtualHost>
<VirtualHost *:80>
ServerName www.yourseconddomain.tld
DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>
Oficjalną dokumentację na temat obsługi wirtualnego hosta opartego na nazwie znajdziesz tutaj .
Należy jednak pamiętać, że będzie to działać tylko z zwykłymi połączeniami HTTP, a nie z HTTPS (HTTP przez SSL): hosty wirtualne oparte na nazwie polegają na znajomości żądanej nazwy, ale Apache nie może poznać tych informacji, dopóki nie zaszyfrowany SSL połączenie jest ustanowione.
Jeśli chcesz, aby Twoja konfiguracja działała również z HTTPS, musisz polegać na rozszerzeniu protokołu SSL o nazwie Server Name Indication (SNI) ( RFC4366 ). Zasadniczo klienci z włączoną obsługą SNI (np. Przeglądarki internetowe) dodają dodatkowe informacje tekstowe podczas ustanawiania szyfrowanego połączenia SSL, co pozwala serwerowi poznać nazwę, o którą prosi się, zanim połączenie SSL będzie gotowe.
Wszystkie przeglądarki nie obsługują jeszcze SNI. W momencie pisania i według Wikipedii te:
- Internet Explorer 7 lub nowszy, w systemie Windows Vista lub nowszym (nie działa na XP, nawet IE 8)
- Mozilla Firefox 2.0 lub nowsza
- Opera 8.0 lub nowsza (protokół TLS 1.1 musi być włączony)
- Opera Mobile w wersji co najmniej 10.1 beta na Androida
- Google Chrome (Vista lub nowszy, XP na Chrome 6 lub nowszy, OS X 10.5.7 lub nowszy na Chrome 5.0.342.1 lub nowszy)
- Safari 2.1 lub nowsza wersja (Mac OS X 10.5.6 lub nowszy i Windows Vista lub nowszy)
- Konqueror / KDE 4.7 lub nowszy
- MobileSafari w Apple iOS 4.0 lub nowszym
- Domyślna przeglądarka Androida na Honeycomb (v3.x) lub nowsza
- Windows Phone 7
- MicroB na Maemo
Hostowanie kilku wirtualnych hostów opartych na nazwie dostępnych przez HTTPS wymaga włączenia mod_ssl i dodania podobnej konfiguracji jak w powyższym przykładzie:
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>
Pamiętaj, że korzystanie z SSL wymaga zakupu certyfikatów SSL dla twoich domen - lub wygenerowania niektórych automatycznie podpisanych i skonfigurowania Apache do używania ich do połączeń SSL.
sudo service apache2 restart