Jak wskazać 2 różne domeny na 1 adres IP (Apache)?

11

Mam dwie różne nazwy domen, które chcę hostować na tym samym hostingu prywatnym, który mam. Chcę, aby wskazywały ten sam adres IP, a jednocześnie miały inną treść (oczywiście). Jak mogę to zrobić? Czy są na to różne sposoby? W takim razie jaki jest najlepszy sposób. Dzięki.

Nima
źródło

Odpowiedzi:

14

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.

p_piotr3k
źródło
czy możesz podać nazwę i ścieżkę pliku konfiguracyjnego apache2?
João Pimentel Ferreira
nie zapomnij zrestartować apache po zmianachsudo service apache2 restart
João Pimentel Ferreira