Apache Virtual Host Mix IP und Domainnamen

511
Stefano Mtangoo

Ich habe einen Fall, in dem ein VPS auf dem Apache Server im Hauptordner "www" ausgeführt wird. Keine vhosts. Jetzt muss ich einige vhosts hosten, aber ich muss über die Haupt-IP-Adresse auf diese bestimmte Web-App zugreifen. Der Other vhost hat einen anderen Domainnamen. Um mein Problem weiter zu erklären, ist hier ein Dummy-Beispiel

Ich habe einen Server mit IP X und laufender App A ohne vhost. Einige Apps verwenden IP X für den Zugriff auf App A. Anschließend müssen WebApp B und C mit den Domänennamen app-b.comund hinzugefügt werden app-c.com. Jetzt muss ich die beiden Apps hinzufügen, ohne die Apps zu stören, die auf App A über IP X zugreifen. Die endgültige Lösung besteht darin, die App A auf vhost zu verschieben und die Apps zu aktualisieren, um darauf zuzugreifen. Dies dauert app-a.comjedoch lange, also brauche ich kurz Begriff Lösung.

Jeder Hinweis oder jede Hilfe wird geschätzt

0
Was genau ist dein Problem damit? Die [offiziellen Beispiele] (https://httpd.apache.org/docs/2.4/vhosts/examples.html) scheinen Ihre Bedürfnisse zu decken? Seth vor 6 Jahren 0
Mein Problem ist, dass Apache auf eine App zugegriffen hat, sagen wir "http: // 192.168.1.1". Jetzt möchte ich, dass dies der Fall ist. Fügen Sie jedoch eine weitere App hinzu, die nur über http: // app-b.com und dann durch eine andere über http: // app-c.com zugänglich ist. Das heißt, "http: // 192.168.1.1" sollte auf App A, "http: // app-b.com", App B und "http: // app-c.com" - App C zugreifen. Jetzt kann ich nicht wissen, wie mischen Sie diese auch nach dem Lesen des Links Stefano Mtangoo vor 6 Jahren 0

1 Antwort auf die Frage

2
Logan Bertram

Wenn Sie Probleme mit der offiziellen Dokumentation haben, fangen wir bei Null an:

Öffnen Sie zunächst Ihre vorhandene Site-Konfiguration für App A, normalerweise unter /etc/apache2/sites-enabled. Da Sie nur mit der IP-Adresse auf App A zugreifen möchten, öffnen Sie die Site-Konfiguration und bearbeiten Sie sie wie folgt:

<VirtualHost 192.168.1.1> DocumentRoot "/www/app-a" ServerName 192.168.1.1 ServerAlias 192.* ServerAlias *:*  # Other directives here </VirtualHost> 

Als Nächstes erstellen Sie eine neue Konfiguration in Ihrem für Sites verfügbaren Ordner, normalerweise /etc/apache2/sites-availablewie folgt:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/app-b.com.conf 

Als nächstes öffnen Sie es:

sudo vim /etc/apache2/sites-available/app-b.com.conf 

Was sich darin befindet, sollte in etwa so aussehen wie in der offiziellen Dokumentation . Bearbeiten Sie es wie folgt:

<VirtualHost *:80> DocumentRoot "/www/app-b" ServerName www.app-b.com  # Other directives here </VirtualHost> 

Aktivieren Sie schließlich Ihre Site mit:

sudo a2ensite app-b.conf sudo service apache2 restart 

Wiederholen Sie dies für App C.

Um App A auf den eigenen vhost zu verschieben, ändern Sie in der Zukunft

<VirtualHost 192.168.1.1> DocumentRoot "/www/app-a" ServerName 192.168.1.1 ServerAlias 192.* ServerAlias *:*  # Other directives here </VirtualHost> 

zu

<VirtualHost *:80> DocumentRoot "/www/app-a" ServerName www.app-a.com  # Other directives here </VirtualHost> 
gut geschrieben. Die Dinge sind jetzt klar. Ich kann sehen, wo ich mich geirrt habe Stefano Mtangoo vor 6 Jahren 0
Ich habe das gerade umgesetzt und ich habe das `gefunden`hat Vorrang vor den anderen, so dass alle Anfragen an ihn gerichtet werden (sei es http: // app-b.com oder http: // app-c.com. Wenn ich diese Site deaktiviere, funktionieren andere einwandfrei. Hast du einen Vorschlag? Stefano Mtangoo vor 6 Jahren 0
@StefanoMtangoo Apache lädt die Configs in der Verzeichnisreihenfolge. Benennen Sie daher die Sites-fähige Konfigurationsdatei für die Site A Virtual Host so um, dass sie die letzte Zeile ist. Auf diese Weise sucht Apache nach anderen übereinstimmenden virtuellen Hosts und greift dann auf die IP zurück, wenn kein Name passt. Es war nicht ganz klar, dass dies notwendig war, aber es sollte jetzt helfen. Logan Bertram vor 6 Jahren 1
Du meinst in Apache main config oder ich meine, ich benenne in z-app-a.conf um, damit ist das letzte Alphabet? Ich verstehe das nicht sehr gut Stefano Mtangoo vor 6 Jahren 0
@StefanoMtangoo Zweiter. Benennen Sie `/ etc / apache2 / sites-enabled / app-a.conf` in` / etc / apache2 / sites-enabled / z-app-a.conf` um. Es sollten keine virtuellen Hostdefinitionen explizit in Ihrer Apache-Hauptkonfiguration enthalten sein. Logan Bertram vor 6 Jahren 1
Ich habs. Nie wusste, dass Apache die Konfiguration alphabetisch lädt. Woher wissen Sie all diese Dinge? Ich habe überall gesucht, wo ich auch Apache2 Docs finden konnte. huh! Stefano Mtangoo vor 6 Jahren 0
@StefanoMtangoo Wenn Sie hier oder in den Dokumenten keine Antworten auf Probleme auf Linux-Computern finden, besuchen Sie das [Linux Questions Forum] (https://www.linuxquestions.org). Es gibt viele detaillierte Probleme und Lösungen, von denen man lernen kann. Logan Bertram vor 6 Jahren 1