Wie zeige ich 2 verschiedene Domains auf 1 IP-Adresse (Apache)?

11

Ich habe zwei verschiedene Domainnamen, die ich auf demselben privaten Hosting hosten möchte, das ich habe. Ich möchte, dass sie auf dieselbe IP-Adresse verweisen und dennoch (natürlich) unterschiedliche Inhalte haben. Wie kann ich das machen? Gibt es verschiedene Möglichkeiten, dies zu tun? In diesem Fall, was ist der beste Weg. Vielen Dank.

Nima
quelle

Antworten:

14

Apache2 unterstützt die Bereitstellung unterschiedlicher Inhalte je nach Domänennamen, auch wenn alle diese Domänen in dieselbe IP-Adresse aufgelöst werden. Jeder der Domänennamen wird von einem virtuellen Host verwaltet , also dem auf Namennamen basierenden virtuellen Host .

Hier ist eine Beispielkonfiguration für zwei Domänen:

NameVirtualHost *:80

<VirtualHost *:80>
  ServerName www.yourfirstdomain.tld
  DocumentRoot /www/yourfirstdomain.tld/
</VirtualHost>

<VirtualHost *:80>
  ServerName www.yourseconddomain.tld
  DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>

Die offizielle Dokumentation zur Unterstützung von namenbasierten virtuellen Hosts finden Sie hier .

Beachten Sie jedoch, dass dies nur mit einfachen HTTP-Verbindungen funktioniert, nicht mit HTTPS (HTTP über SSL): Namensbasierte virtuelle Hosts müssen wissen, welcher Name angefordert wird, aber diese Informationen können Apache erst nach dem verschlüsselten SSL bekannt werden Verbindung wird hergestellt.

Wenn Ihr Setup auch mit HTTPS funktionieren soll, müssen Sie sich auf eine Erweiterung des SSL-Protokolls mit dem Namen Server Name Indication (SNI) ( RFC4366 ) verlassen. Grundsätzlich fügen SNI-fähige Clients (z. B. Webbrowser) beim Herstellen der verschlüsselten SSL-Verbindung zusätzliche Klartextinformationen hinzu, sodass der Server den angeforderten Namen kennen kann, bevor die SSL-Verbindung bereit ist.

Alle Browser unterstützen SNI noch nicht. Zum Zeitpunkt des Schreibens und laut Wikipedia tun diese:

  • Internet Explorer 7 oder höher unter Windows Vista oder höher (funktioniert nicht unter XP, auch nicht unter IE 8)
  • Mozilla Firefox 2.0 oder höher
  • Opera 8.0 oder höher (das TLS 1.1-Protokoll muss aktiviert sein)
  • Opera Mobile mindestens Version 10.1 Beta für Android
  • Google Chrome (Vista oder höher, XP unter Chrome 6 oder neuer, OS X 10.5.7 oder höher unter Chrome 5.0.342.1 oder neuer)
  • Safari 2.1 oder höher (Mac OS X 10.5.6 oder höher und Windows Vista oder höher)
  • Konqueror / KDE 4.7 oder höher
  • MobileSafari in Apple iOS 4.0 oder höher
  • Android Standardbrowser auf Honeycomb (v3.x) oder neuer
  • Windows Phone 7
  • MicroB auf Maemo

Um mehrere namenbasierte virtuelle Hosts zu hosten, auf die über HTTPS zugegriffen werden kann, müssen Sie mod_ssl aktivieren und eine ähnliche Konfiguration wie im obigen Beispiel hinzufügen:

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>

Denken Sie daran, dass Sie für die Verwendung von SSL SSL-Zertifikate für Ihre Domänen kaufen oder einige automatisch signierte Zertifikate generieren und Apache so konfigurieren müssen, dass sie für SSL-Verbindungen verwendet werden.

p_piotr3k
quelle
Kannst du den Namen und den Pfad der Apache2-Konfigurationsdatei angeben?
João Pimentel Ferreira
Vergessen Sie nicht, Apache nach Änderungen neu zu startensudo service apache2 restart
João Pimentel Ferreira