Ich versuche, meiner Apache-Konfiguration einen zweiten virtuellen Host hinzuzufügen, kann den neuen virtuellen Host jedoch anscheinend nicht verwenden.
Meine httpd.conf
enthält nur die folgende Zeile:
ServerName radiofreebrighton.org.uk
Ich habe auch eine ports.conf
Datei, die Folgendes enthält:
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
Listen 443
</IfModule>
Ich habe zwei Dateien, auf sites-available
die durch einen Link verwiesen sites-enabled
wurde a2ensite
:
- radiofreebrighton.org.uk
- trafalgararches.co.uk
Der Inhalt des ersten ist:
<VirtualHost _default_:80>
DocumentRoot /home/tom/www
ServerAdmin [email protected]
ServerName radiofreebrighton.org.uk
ServerAlias www.radiofreebrighton.org.uk
<Directory /home/tom/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel error
CustomLog /var/log/apache2/access.log combined
Alias /wiki /home/tom/www/mediawiki/index.php
</VirtualHost>
Der Inhalt des letzteren ist:
<VirtualHost *:80>
DocumentRoot /home/tom/tata-www
ServerAdmin [email protected]
ServerName trafalgararches.co.uk
ServerAlias www.trafalgararches.co.uk
<Directory /home/tom/tata-www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
logLevel error
ErrorLog /var/log/apache2/error.log
</VirtualHost>
Aber jedes Mal, wenn ich eine Seite von trafalgararches.co.uk anfordere, bekomme ich eine Seite von radiofreebrighton.org.uk. Warum könnte das passieren? Wie kann ich es reparieren?
Bearbeiten:
Konfiguration des virtuellen Hosts im Sinne von Apache:
tom@rfb:/usr/local$ apache2ctl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server radiofreebrighton.org.uk (/etc/apache2/sites-enabled/radiofreebrighton.org.uk:1)
port 80 namevhost radiofreebrighton.org.uk (/etc/apache2/sites-enabled/radiofreebrighton.org.uk:1)
port 80 namevhost trafalgararches.co.uk (/etc/apache2/sites-enabled/trafalgararches.co.uk:1)
Syntax OK
(Gelesen über apache2ctl -S
aka httpd -S
.)
apache-2.2
virtualhost
Tom Wright
quelle
quelle
ServerName
undServerAlias
-Linien entfernen . Stellen Sie außerdem sicher, dass Sie Apache neu gestartet haben.NameVirtualHost *:80
irgendwo in deiner Konfiguration?Antworten:
Nun, diese Frage ist über ein Jahr alt, aber ich bin auf ein ähnliches "Problem" gestoßen. Dies mag offensichtlich sein, aber vergessen Sie nicht, den Apache-Dienst neu zu starten, nachdem Sie zusätzlichen virtuellen Host aktiviert haben. Nach der Ausführung
a2ensite
für den zweiten virtuellen Host zeigt die Ausgabe vonapache2ctl -S
an, dass beide Sites verfügbar sind (und eine davon ist die Standardeinstellung), auch wenn Sie Apache nicht neu geladen haben.Angenommen, Sie haben zwei virtuelle Hosts - Site1 und Site2. Sie führen den
a2ensite site1
Apache-Dienst aus und laden ihn erneut. Jetzt können Sie zugreifenhttp://site1
und es ist die Standardeinstellung. Jetzt rennst dua2ensite site2
aber vergiss Apache neu zu starten. Die Ausgabe vonapache2ctl -S
wird sein:Wenn Sie jedoch versuchen zu laden
http://site2
, wird die Standardsite (site1) tatsächlich geladen, da die Konfiguration nicht geladen wird.quelle
Ich hatte ein ähnliches Problem, bei dem meine zusätzlichen vhosts auf Port 443 (SSL / HTTPS) alle in das Verzeichnis des ersten aufgeführten vhost geleitet wurden. Apache ignorierte im Wesentlichen die servername -Eigenschaft und stimmte nur auf dem ip: -Port überein.
Es stellte sich heraus, dass mir der Befehl 'NameVirtualHost *: 443' fehlte, um das benannte virtuelle Hosting für Port 443 zu aktivieren.
'NameVirtualHost *: 443' muss nur einmal aufgerufen werden und muss über Ihren vhosts für Port 443 definiert werden. Ich habe meine Definition in die Datei ports.config eingefügt, damit sie so aussieht:
Vergiss nicht, Apache nach jeder Änderung neu zu starten.
quelle
NameVirtualHost
die folgende Meldung beim Start verwenden:AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf
Meine 2 Cent: Da ich mich an eine IP halten muss (ich möchte nicht, dass die Site in allen installierten Netzwerken bereitgestellt wird), habe ich vergessen, diese zu ändern, nachdem sich die lokale private IP des Servers geändert hat:
NameVirtualHost 192.168.100.20:80 <VirtualHost 192.168.100.20:80>
Natürlich ist es kein Apache-Problem, Ihnen mitzuteilen, dass IP lokal nicht vorhanden ist.
quelle
Tom, bitte schau hier nach http://httpd.apache.org/docs/2.0/en/mod/core.html#namevirtualhost
Es sollte also in Ordnung sein, wenn Sie die Standard- IP-Adresse Ihres Servers ändern .
quelle
Ich finde die Antwort hier: http://alexking.org/blog/2007/11/01/apache-2-only-serves-first-virtual-host
Fügen Sie 2 Servernamen in dasselbe 1 VirtualHost-Tag wie unten ein:
Ich hatte Probleme mit der zweiten Site, weil ich zwei VirtualHost-Tag-Blöcke hatte.
quelle
Ich hatte dieses Problem beim Migrieren von Sites auf einen neuen Ubuntu 16-Server. Nach einigem Kopfkratzen stellte ich fest, dass das SSL-Modul nicht standardmäßig aktiviert war, sodass alle Elemente in den
<IfModule mod_ssl.c>
Blöcken natürlich unbemerkt ignoriert werden.Vor Jahren habe ich alle meine SSL-vhosts in diese Bedingung eingeschlossen, und diesmal hatte ich gerade die Konfigurationsdateien auf den neuen Server kopiert.
Ich habe es durch Aktivieren des Moduls behoben:
quelle
Ich habe festgestellt, dass die Ursache für dieses Problem ein / etc / hosts-Eintrag auf meinem Server ist, in dem die URL auf die externe IP des Servers verweist.
Irgendwann muss ich es eingerichtet haben, bevor DNS fertig war, also habe ich einen / etc / hosts-Eintrag auf meinem Server eingegeben, der auf seine eigene externe IP verweist:
Dann richte ich ein ServerAlias zu einer vorhandenen Site für "vhost.example.com" ein
Aber nichts, was ich tun könnte, würde verhindern, dass Apache die Standard-ssl.conf-Site für SSL-Anforderungen an vhost.example.com bereitstellt. Port 80 HTTP funktionierte einwandfrei, aber das SSL zeigte stattdessen immer die Standard-Site. Am Ende brachte mich dieser SO-Thread dazu, "apachectl -S" zu versuchen, das Websites anzeigt, und schließlich konnte ich es herausfinden.
Wenn Sie also die Standard-SSL-Site anstelle der erwarteten Site erhalten, stellen Sie sicher, dass Sie die externe IP-Adresse Ihres Servers nicht in einem / etc / hosts-Eintrag hinzugefügt haben! Eine ziemlich seltsame Sache im Nachhinein, aber hoffentlich hilft das jemand anderem!
quelle