Konfigurieren Sie virtuelle Apache-Hosts, um mehrere Websites mit derselben IP-Adresse auszuführen

873
spin_eight

Ich habe den Apache-Webserver auf meinem Computer eingerichtet.

Und versuchen, zwei Standorte für dieselbe IP-Adresse bereitzustellen, basierend auf dem Namen der Domäne.
Ich habe 2 Domains:

  • example0.com
  • example1.com

Sie leiten auf die gleiche IP-Adresse um (ich verwende "freenom" -Dienste). Daher muss ich basierend auf dem Domainnamen unterschiedliche Inhalte bereitstellen.

Ich folge diesem Tutorial zu Digital Ocean: " Wie man Apache Virtual Hosts unter Debian 7 einrichtet "

Ich habe alle Schritte bis auf den letzten Schritt ausgeführt („ Einrichten der lokalen Hosts “).

Das Ergebnis ist, dass ich für jeden Domainnamen denselben Inhalt bekomme.

Ich habe in /etc/apache2/sites-available/: example0.com.conf, example1.com.conf, 000-default.confund default-ssl.conf.

In example0.com.confbekam ich:

<VirtualHost *:80>  # The ServerName directive sets the request scheme, hostname and port that  # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com   ServerAdmin webmaster@localhost  ServerName example0.com  ServerAlias www.example0.com   DocumentRoot /var/www/example0.com/public_html  

in example1.com.confbekam ich das gleiche Zeug aber mit example1example0

Ich benutzte:

a2ensite example0.com  a2ensite example1.com  

und

service apache2 restart 

Was mache ich falsch?

-1
Der von Ihnen erwähnte „letzte Schritt“ („Einrichten der lokalen Hosts“) wird als „optionaler Schritt“ und nur für die Einrichtung einer lokalen Entwicklungsumgebung gekennzeichnet. kein Produktionsserver-Setup. Das Setup sollte also gut funktionieren, wenn an diese IP-Adresse ein tatsächlicher Domänenname angehängt ist. Der einzige Vorschlag, da Sie keine eigenen Konfigurationsdateien anzeigen, ist, dass Sie Apache möglicherweise nicht neu gestartet haben, damit er Ihre neue Konfigurations-Konfiguration lesen kann. JakeGould vor 7 Jahren 0
Verwenden Sie http oder https? ist wichtig zu antworten. OscarAkaElvis vor 7 Jahren 0
@OscarAkaElvis http spin_eight vor 7 Jahren 0
@JakeGould ich es neu gestartet spin_eight vor 7 Jahren 0
Hat Ihre Haupt-Apache-Konfigurationsdatei `NameVirtualHost` unkommentiert wie folgt eingestellt:` NameVirtualHost *: 80`? Wenn nicht, kommentieren Sie es so, dass es sich so liest, und starten Sie Apache neu. JakeGould vor 7 Jahren 0
@JakeGould nein, tut es nicht spin_eight vor 7 Jahren 0
@spin_eight Versuchen Sie dann, "NameVirtualHost *: 80" zu Ihrer Apache-Konfigurationsdatei hinzuzufügen, starten Sie Apache neu und sehen Sie, was passiert. JakeGould vor 7 Jahren 0

1 Antwort auf die Frage

-1
OscarAkaElvis

Ich denke, du bist in die gute Richtung. Überprüfen Sie jeden Schritt! es muss funktionieren

Sie sollten zwei Verzeichnisse für die zwei verschiedenen Webseiten erstellen. Sagen wir:

/var/www/example0.com/public_html /var/www/example1.com/public_html 

Dann müssen Sie den Besitzer der Verzeichnisse einstellen:

sudo chown -R $USER:$USER /var/www/example0.com/public_html sudo chown -R $USER:$USER /var/www/example1.com/public_html 

Wobei $ USER der Besitzer des Apache ist. Das hängt von Ihrem System ab. Könnte www-Daten, Apache, http oder andere sein. Ich denke, auf Debian sollten WWW-Daten sein

Dann machen Sie die Verzeichnisse lesbar und ausführbar:

sudo chmod -R 755 /var/www 

Erstellen wir für jede eine eigene HTML-Webseite (in beiden Fällen index.html):

<html> <head> <title>Welcome to example0.com</title> </head> <body> <h1>Success, example0.com is working!</h1> </body> </html> 

und

<html> <head> <title>Welcome to example1.com</title> </head> <body> <h1>Success, example1.com is working!</h1> </body> </html> 

Speichern Sie beide Dateien jeweils in einem eigenen Verzeichnis ( /var/www/example0.com/public_htmlund /var/www/example1.com/public_html). Ich wiederhole beide mit dem Namen index.html

Dann lassen Sie uns VirtualHosts-Konfigurationsdateien erstellen. Als Vorlage verwenden wir die Standarddatei:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example0.com.conf sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example1.com.conf 

Bearbeiten Sie diese dann mit vi, nano oder einer beliebigen Texteditor-Software. Beginnen wir mit example0.conf

<VirtualHost *:80> ServerAdmin admin@example0.com ServerName example0.com ServerAlias www.example0.com DocumentRoot /var/www/example0.com/public_html ErrorLog $/error.log CustomLog $/access.log combined </VirtualHost> 

Dann dasselbe für die zweite Datei:

<VirtualHost *:80> ServerAdmin admin@example1.com ServerName example1.com ServerAlias www.example1.com DocumentRoot /var/www/example1.com/public_html ErrorLog $/error.log CustomLog $/access.log combined </VirtualHost> 

Dann werden wir die neuen Sites aktivieren:

sudo a2ensite example0.com.conf sudo a2ensite example1.com.conf 

Starten Sie dann den Apache-Dienst neu, damit die Änderungen wirksam werden:

sudo service apache2 restart 

Und das ist alles.

Wie testen? Sie können Ihre hosts-Datei ändern, um auf die neuen Webserver zuzugreifen:

127.0.0.1 localhost 127.0.1.1 guest-desktop 111.111.111.111 example0.com www.example0.com 111.111.111.111 example1.com www.example1.com 

Natürlich müssen Sie die IP-Adresse 111.111.111.111 für eine echte IP-Adresse ändern, auch Ihre LAN-IP.

Dann können Sie auf dem Computer testen, auf den Sie Ihre Hosts-Datei geändert haben, http://example0.comund versuchen, mit Ihrem Browser auf und zuzugreifenhttp://example1.com

Viel Glück!

Ich habe das Gleiche getan, wenn ich verschiedene Domainnamen eingebe, wird derselbe Inhalt zurückgegeben. Dies ist meine Frage spin_eight vor 7 Jahren 1