2016-06-02 10 views
1

Auf Amazon EC2 wird ignoriert, ich habe die folgende Konfiguration:Apache 2.4 Virtualserver

<VirtualHost *:80> 
    ServerName a.example.com 
    ServerRoot /var/www/a.example.com 
    DocumentRoot html 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName b.example.com 
    ServerRoot /var/www/b.example.com 
    DocumentRoot html 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName c.example.com 
    ServerRoot /var/www/c.example.com 
    DocumentRoot html 
</VirtualHost> 

Das Problem ist, dass trotz der oben genannten Konfiguration korrekt ist, alle Anforderungen an eine der drei Domain-Namen gerichtet werden als ob die Anfrage an c.example.com ging - als ob die ServerName Werte gerade ignoriert würden.

Wer sieht hier ein Problem?

Antwort

1

ServerRoot nur in server config Context, nicht in VirtualHost

erlaubt ist, wenn Sie versuchen, es an anderer Stelle zu verwenden, werden Sie einen Konfigurationsfehler erhalten, dass entweder den Server von Umgang mit Anfragen in diesem Zusammenhang verhindern korrekt, oder wird den Server von allen Betrieb halten - dh der Server wird nicht einmal starten.

+0

Erstaunlich. Keine Warnungen, keine Fehler, Datei hat keine Parsing-Fehler, selbst "httpd -S" zeigt korrektes VirtualHost-Routing an ... einfach unglaublich schlechte Fehlerberichte. – StampyCode

+0

Es ist tatsächlich ein bisschen seltsam. Tatsächlich scheint die Direktive sogar in 'VirtualHost' zu funktionieren, außer dass nur der letzte angewendet wird (es gibt sogar keinen Sinn mehrere Direktiven' ServerRoot' zu haben, da sie die Position vieler anderer relativer Pfade bestimmt) –

0

Das Problem, das ich gefunden, ist, dass meine Build von Apache2:

Server version: Apache/2.4.18 (Amazon) 
Server built: Mar 7 2016 22:32:11 

nicht die DocumentRoot Parameter richtig verarbeitet.

Am DocumentRoot Config Definition here, heißt es

Wenn der Verzeichnis-Pfad nicht absolut ist dann angenommen wird, relativ zum ServerRoot sein.

Nun, das ignoriert offenbar wird, denn wenn ich den DocumentRoot Wert wie folgt ändern:

<VirtualHost *:80> 
    ServerName b.example.com 
    ServerRoot /var/www/b.example.com 
    DocumentRoot html 
</VirtualHost> 

Um dies:

<VirtualHost *:80> 
    ServerName b.example.com 
    ServerRoot /var/www/b.example.com 
    DocumentRoot /var/www/b.example.com/html #<-- updated 
</VirtualHost> 

die Konfiguration funktioniert dann. Ich habe nicht getestet, ob dies ein Problem mit dem Kern Apache Build ist, oder wenn es mit der Amazon-Version, so oder so, ich hoffe, diese Antwort hilft jemandem.

Verwandte Themen