Dennis: Apache2: VirtualHosts und default-Konfiguration

Beitrag lesen

Hi Marc,

Nun möchte ich in der default-Datei erreichen, dass keine Requests auf den Server (Verzeichnis /var/www/) erlaubt sind:

In der apache2.conf im Verzeichnis /etc/apache2 (ich gehe mal davon aus, dass du einen Apache2 über das Packetmanagment-System installiert hast) müsste irgendwo so etwas stehen:

<Directory />
  Order deny,allow
  Deny from all
</Directory>

Dass dies dort steht ist wichtig - dadurch werden nämlich bereits sämtliche Anfragen auf ALLE Verzeichnisse deines Servers verboten.

Wenn du den Virtual-Host, der unter Debian standardmäßig mit dem Namen "default" betitelt wird nicht haben willst - dann lösche doch einfach den Link auf die Datei in sites-enabled!

Allerdings ist dieser VirtualHost ganz praktisch - ich würde diesen VirtualHost wieder anlegen mit:

<VirtualHost _default_:*>
  ServerAdmin du@host
  DocumentRoot /var/www/default
  <Directory /var/www/default>
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

In /var/www/default kannst du dann eine index.* legen, in die du einfach reinschreibst "Diese Webseite wird leider nicht oder nicht mehr auf diesem Server gehostet." (Wenn du willst kannst du dann auch noch alle Aufrufe per mod_rewrite auf diese index Datei umleiten.)

Folgende Vorteile hast du:

  • Alle nicht existierenden Seiten, d.h. nicht konfigurierten Domains werden von diesem VHost beantwortet
  • Der Besucher bekommt eine Fehlerseite, die du nach belieben gestalten kannst.

Das Ganze geschieht ohne VirtualHosts - es sollen einfach alle Requests abgebrochen werden. Wahrscheinlich könnte ich das Ganze noch wesentlich einfacher gestalten, schließlich soll /var/www/ an sich gar kein DocumentRoot sein, sondern nur Unterordner davon - oder brauche ich den DocumentRoot?

Wie bereits gesagt - kein Mensch zwingt dich /var/www irgendwo als DocumentRoot zu nutzen. Wenn du diesen DocumentRoot außerhalb eines VirtualHost Containers notierst und dann im späteren Verlauf doch noch Virtuelle Hosts verwendest, so wird meines Wissen der globale Host sowieso ignoriert und undefinierte Seiten fallen auf den ersten VHost oder den mit _default_ bezeichneten VHost zurück.

In der linux-mobil.net.conf-Datei werden dann die folgenden Zeilen (den ganzen anderen Quatsch mal weggelassen) hineingeschrieben:
<VirtualHost www.linux-mobil.net>
        ServerName www.linux-mobil.net
        ServerAlias linux-mobil.net

DocumentRoot /var/www/linux-mobil.net/htdocs/
        <Directory /var/www/linux-mobil.net/htdocs/>
                Order deny,allow
                allow from all
        </Directory>
</VirtualHost>

Würde ich so nicht machen - verwende lieber:

<VirtualHost *:80>

Oder - wenn 123.456.789.0 die IP deines Server ist:

<VirtualHost 123.456.789.0:80>

Aus optischen Gründen und weil du die Datei linux-mobil.net genannt hast, würde ich dann noch die Werte von ServerName und ServerAlias miteinander vertauschen ;-)

Nun werden allerdings alle Zugriffe auf meinen Testserver verweigert, auch die auf www.linux-mobil.net.

Möglicherweise das bereits erwähnte Phänomen: Wenn du einen VHost anlegst, existiert der globale Server nicht mehr - und da dein VHost oben vermutlich fehlerhaft konfiguriert ist, nimmt der Server eben gar nichts mehr an.

Desweiteren stelle bitte sicher, dass - am besten irgendwo am Ende der apache2.conf, BEVOR die VirtualHosts included werden eine der folgenden Zeilen steht:

NameVirtualHost *
NameVirtualHost *:80
NameVirtualHost 123.456.789.0
NameVirtualHost 123.456.789.0:80

Ich persöhnlich würde die erste oder zweite Methode bevorzugen - wenn du eine der letzten Methoden verwendest, MUSS der VirtualHost mit <VirtualHost 123.456.789.0> definiert sein, andernfalls kannst du <VirtualHost *:80> (also mit Wildcard) verwenden.

MfG, Dennis.

--
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
Patch zur Verwendung von PATHINFO in JLog
Was ich genau weiß, ist, dass es keinen Sinn hat darüber nachzudenken. Male dir neunundneunzig Variationen aus und du stolperst in Szenario Nummer hundert. (Andreas Steinhöffel, Die Mitte der Welt)