Ubuntu und Apache name based virtual hosts

iceview

Lieutenant
Registriert
Jan. 2008
Beiträge
714
Hallo zusammen,

ich habe zwei Fragen zum Thema name based virtual hosts.

1. Wenn ich einen vHost Container aufbaue in dieser Form (ohne SSL jetzt zu beachten):

Code:
NameVirtualHost *:443

<VirtualHost *:443>
ServerName www.domain.tld
ServerAlias domain.tld 
DocumentRoot /www/domain
</VirtualHost>

<VirtualHost *:443>
ServerName www.otherdomain.tld
ServerAlias otherdomain.tld 
DocumentRoot /www/otherdomain
</VirtualHost>


Muss dann jeder der beiden Servernames in die /etc/hosts Datei mit eingetragen werden?




2.) In meiner /etc/ports.conf sieht es derzeit so aus

Code:
<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    Listen 443
NameVirtualHost *:443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

Hier zum Verständnis, würde es nicht ausreichen NameVirtualHost *:443 in der unter sites_enabled angegebenen Datei vor die beiden vHosts zu schreiben?

Warum steht dies in der ports.conf?

Danke
 
zu 1.) Nein. Die eingetragenen ServerNames/ServerAliases werden mit dem Host:-Header beim HTTP-Zugriff verglichen, um den zuständigen Webserver zu ermitteln. Mit DNS bzw. /etc/hosts hat das nichts zu tun.

Der anfragende Browser muß natürlich schon irgendwoher die IP deiner Webserver bekommen. Die stehen sicher im DNS. Wenn nicht, müßte man sie auf _Clientseite_, also auf dem Rechner mit dem Webbrowser, in die /etc/hosts eintragen.

zu 2.) Keine Ahnung. Ich halte sowieso wenig von einer Aufteilung der Webserver-Konfiguration auf x verschiedene Files. Das doppelte "NameVirtualHost *:443", wenn mod_ssl.c aktiv ist, wird beim Apache-Start nicht angemeckert? Die Option tut bei neueren Apache-Versionen sowieso nichts mehr.

(Zitat) "The NameVirtualHost directive no longer has any effect, other than to emit a warning. Any address/port combination appearing in multiple virtual hosts is implicitly treated as a name-based virtual host. "
 
Ich arbeite unter Apache 2.2 mit <VirtualHost *:443> in ner Config-Datei unter sites-available bzw. -enabled. Klappt wunderbar mit der namensbasierten Auflösung.

Und nein, Finger weg von /etc/hosts, außer du hast keine saubere DNS-Auflösung für die Domain.
 
Hallo,

die Domains werden von außen über den Reverseproxy auf der Firewall erreicht.
Mir ging es hier um das grundlegende Verständnis, aber mein vorgehen scheint ja soweit sauber zu sein.

Die Option NameVirtualHost *:443 taucht in der Tat zwei mal auf... sogar noch ein wenig konfuser:

sites_avaible sagt

Code:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
.
.
.
</VirtualHost>
</IfModule>

ports.conf sagt ebenfalls

Code:
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
Listen 443
NameVirtualHost *:443
</IfModule>

Eine der beiden Anweisungen kann ich mir doch schenken oder?

In den Sites Avaible rausnehmen und einfach mit dem <VirtualHost *.:443> starten sollte doch gehen...

Danke!
 
Bei der ports* geht es nur um die Zuweisung der Listener. Ich würde bei der Aufteilung bleiben. Du hast sicherlich Debian/Ubuntu am laufen, da ist das eben so geregelt; nicht nur für Apache, auch für viele andere Dienste.

Klar "könntest" du das ganze Modell zusammenfassen, aber ich wüde es echt nicht machen. Vor allem beim Upgrade der Pakete könnte das nachher crashen.

Was willst du denn mit diesem Modell erreichen? Ich habe für unseren Betrieb mal einen RP für ein Lync System aufgesetzt, ebenfalls via Apache2.2, da brauchte es noch einiges mehr an Konfiguration.
 
Erreichen möchte ich nur eine klar Struktur ohne viele Dopplungen.

Also Du meinst, in den ports dieses drin lassen inkl. des NameVirtual Host *:443?

Code:
    <IfModule mod_ssl.c>
    Listen 443
    NameVirtualHost *:443
    </IfModule>
 
Sind eigentlich keine doppelten Einträge, die sollen wirklich nur helfen, dass du alles nachher auseinander halten kannst. :) Das ist bei vielen vHosts unglaublich nützlich! Würde das Konzept jetzt nicht umschmeißen, nur weil du "nur" 3 Hosts hast oder so. :)

Und ja, lass das unbedingt drin! Ohne "Listen" wird Apache wohl eh streiken.

Deine Config sieht mir auf die Schnelle aber auch so aus, als würde Apache beim reload (service reload apache2) meckern, also eine Warnung ausgeben, stimmts'?
 
Nö alles sauber... den Listener auf 443 wollte ich nicht rauswerfen, es ging mir nur um den NameVirtualHost.

Was sollte sich denn Deiner Meinung nach beissen, dass der Apache meckert?
 
Zurück
Oben