117471
Goto Top

Apache2: VirtualHost-Konfiguration bei (direktem) Aufruf über die IP-Adresse

Vorab: Es kann sein, dass ich gedanklich gerade voll ins Klo greife. Ich lerne gerade Apache2, möchte einen Testserver aufsetzen und stehe gedanklich voll auf dem Schlauch. Vermutlich habe ich etwas total falsch verstanden.

Ich habe meine vhosts wie folgt konfiguriert:

mail.conf
<VirtualHost *.80>
  ServerName mail.acme.tld
...

mail-ssl_owaproxy.conf
<VirtualHost *.443>
  ServerName mail.acme.tld
...
Hinweis: In dieser Datei gibt es noch zusätzliche Einträge für einen (funktionierenden) ReverseProxy, der auf einen Exchanger zeigt. Deshalb der exotische Name.

owncloud.conf
<VirtualHost *.80>
  ServerName owncloud.acme.tld
...

owncloud-ssl.conf
<VirtualHost *.443>
  ServerName owncloud.acme.tld
...

apache2ctl -S listet die Hosts genau so, wie ich mir das vorgestellt habe:
VirtualHost configuration:
*:443                  is a NameVirtualHost
         default server mail.acme.tld (/etc/apache2/sites-enabled/mail-ssl_owaproxy.conf:11)
         port 443 namevhost mail.acme.tld (/etc/apache2/sites-enabled/mail-ssl_owaproxy.conf:11)
         port 443 namevhost owncloud.acme.tld (/etc/apache2/sites-enabled/owncloud-ssl.conf:2)
*:80                   is a NameVirtualHost
         default server mail.acme.tld (/etc/apache2/sites-enabled/mail.conf:1)
         port 80 namevhost mail.acme.tld (/etc/apache2/sites-enabled/mail.conf:1)
         port 80 namevhost owncloud.acme.tld (/etc/apache2/sites-enabled/owncloud.conf:1)

Ich möchte erreichen, dass Anfragen, die direkt an die IP-Adresse gehen, in einen weiteren VirtualHost ausgesteuert werden und packe eine zusätzliche Konfiguration dazu:

default.conf
<VirtualHost _default_.80>
  # ServerName nix
...
</VirtualHost>
<VirtualHost _default_.443>
  # ServerName nix
...
</VirtualHost>

Wider Erwarten kidnappt mir dieser Eintrag jedoch zusätzlich die Konfiguration für owncloud.acme.tld:
VirtualHost configuration:
*:443                  is a NameVirtualHost
         default server owncloud.acme.tld (/etc/apache2/sites-enabled/default.conf:11)
         port 443 namevhost owncloud.acme.tld (/etc/apache2/sites-enabled/default.conf:11)
         port 443 namevhost mail.acme.tld (/etc/apache2/sites-enabled/mail-ssl_owaproxy.conf:11)
         port 443 namevhost owncloud.acme.tld (/etc/apache2/sites-enabled/owncloud-ssl.conf:2)
*:80                   is a NameVirtualHost
         default server owncloud.acme.tld (/etc/apache2/sites-enabled/default.conf:1)
         port 80 namevhost owncloud.acme.tld (/etc/apache2/sites-enabled/default.conf:1)
         port 80 namevhost mail.acme.tld (/etc/apache2/sites-enabled/mail.conf:1)
         port 80 namevhost owncloud.acme.tld (/etc/apache2/sites-enabled/owncloud.conf:1)

Anmerkung: owncloud.acme.tld ist der voll qualifizierte (im Linux konfigurierte und im DNS hinterlegte) Hostname. Ich vermute hier die Ursache - aber wie kann ich erreichen, dass die VirtualHosts aus der default.conf nur auf direkten Aufruf via IP-Adresse oder "illegalen" Hostnamen reagieren?

Wo liegt der Gedankenfehler?

Content-Key: 276385

Url: https://administrator.de/contentid/276385

Printed on: April 26, 2024 at 21:04 o'clock

Mitglied: 114757
114757 Jul 04, 2015 updated at 07:07:37 (UTC)
Goto Top
Moin,
<VirtualHost _default_.80>
ich würde hier erst mal die Punkte
in allen deinen Configs überall durch einen Doppelpunkt ersetzen face-wink

Gruß jodel32
Mitglied: 117471
117471 Jul 06, 2015 updated at 06:57:01 (UTC)
Goto Top
Das war eher ein Zitierfehler. Allerdings habe ich gelernt, dass:
- die Konfigurationsdateien in alphabetischer Reihenfolge genutzt werden
- der Hostname bei der Benutzung von VHosts niemals auf einen der VHosts lauten sollte

Und genau das ist ja der Grund, warum ich "gerade ein bisschen mit Apache herumtüddel" face-smile

Den Unterschied zwischen <VirtualHost _default_:80> und <VirtualHost *:80> konnte mir hingegen noch niemand erklären. Gibt es da überhaupt einen?
Mitglied: 114757
Solution 114757 Jul 06, 2015 updated at 08:25:56 (UTC)
Goto Top
Zitat von @117471:
Den Unterschied zwischen <VirtualHost _default_:80> und <VirtualHost *:80> konnte mir hingegen noch niemand
erklären. Gibt es da überhaupt einen?

http://httpd.apache.org/docs/2.2/vhosts/examples.html

Der Unterschied ist das ein Default-vHost einspringt wenn eine undefinierte IP Adresse benutzt wurde. Das *:80 besagt ja stattdessen: alle IP Adressen die der Host aktiv nutzt

Gruß jodel
Mitglied: 117471
117471 Jul 06, 2015 updated at 08:27:56 (UTC)
Goto Top
Das würde in meinem Fall bedeuten, dass die _default_-Einträge niemals angewandt werden; da die IP-Adresse zur vorgeschalteten Firewall gehört (die dann Port 443 auf den Linux-Host NATtet) - korrekt?
Mitglied: 114757
114757 Jul 06, 2015 at 08:52:21 (UTC)
Goto Top
So würde ich das dann auch sehen.