PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache2 und vHosts - einer läuft, der andere nicht



DaVinciXL
19.07.08, 09:20
Moin moin.

Ich habe seit geraumer Zeit mal wieder mit Apache2 hantiert und möchte jetzt mehrere Webseiten auf demselben Server hosten. Sollte mit VirtualHosts ja kein Problem sein.
Ist es dank der ausgezeichneten Apache-Doku auch nicht wirklich - andererseits allerdings wieder doch.

Ich habe zwei Domains, www.aaaa.de und www.bbbb.de (wobei der echte Domainname von aaaa im Alphabet auch tatsächlich vor bbbb kommt), die beide per A-Record auf die IP-Adresse meines Servers zeigen.

Dort habe ich insgesamt 3 VirtualHosts konfiguriert (einer davon ist "default", mit der Apache2-Standardseite).

Wenn ich jetzt nur http://meineip im Browser eingebe, komme ich bei der Startseite von aaaa.de, abgelegt in /var/www/aaaa.de/docs/, raus -> oops.

Wenn ich jetzt http://www.aaaa.de im Browser eingebe, komme ich bei der korrekten Seite, abgelegt in /var/www/aaaa.de/docs/, raus -> okay.

Wenn ich jetzt http://www.bbbb.de im Browser eingebe, komme ich bei der korrekten Seite, abgelegt in /var/www/aaaa.de/docs/, raus -> oops.

Eine Überprüfung der Konfig liefert:

# apache2ctl configtest
[Sat Jul 19 10:33:09 2008] [warn] NameVirtualHost www.bbbb.de:0 has no VirtualHosts
Syntax OK

Die Konfig-Dateien für aaaa.de und bbbb.de sind exakt gleich, nur dass ich bei der Zweiten natürlich überall aaaa durch bbbb ersetzt habe.
Ich stehe total auf dem Schlauch und/oder sehe den Wald vor lauter Bäumen nicht. Wo ist mein Fehler?

Vielen Dank im Voraus...

Hier mal alle drei vhost-config-files:

default


NameVirtualHost *
<VirtualHost *>
ServerAdmin bla@blubb.de

DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
RedirectMatch ^/$ /apache2-default/
</Directory>

DirectoryIndex index.html index.html index.php

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

www.aaaa.de


NameVirtualHost www.aaaa.de
<VirtualHost www.aaaa.de >
#Basic setup
ServerAdmin info@aaaa.de
ServerName www.aaaa.de
ServerAlias aaaa.de *.aaaa.de
DocumentRoot /var/www/aaaa.de/docs

<Directory /var/www/aaaa.de/docs>
Order Deny,Allow
Allow from all
# Don't show indexes for directories
Options -Indexes
</Directory>
</VirtualHost>


www.bbbb.de


NameVirtualHost www.bbbb.de
<VirtualHost www.bbbb.de >
#Basic setup
ServerAdmin info@bbbb.de
ServerName www.bbbb.de
ServerAlias bbbb.de *.bbbb.de
DocumentRoot /var/www/bbbb.de/docs

<Directory /var/www/bbbb.de/docs>
Order Deny,Allow
Allow from all
# Don't show indexes for directories
Options -Indexes
</Directory>
</VirtualHost>

DaVinciXL
19.07.08, 09:32
Hmm... kommentiere ich die "NameVirtualHost"-Zeilen in www.aaaa.de und www.bbbb.de aus, erhalte ich übrigens folgenden Fehler:



# /etc/init.d/apache2 reload
Reloading web server config...9008
[Sat Jul 19 10:54:49 2008] [warn] VirtualHost www.aaaa.de:0 overlaps with VirtualHost www.bbbb.de:0, the first has precedence, perhaps you need a NameVirtualHost directive


Also scheint der Fehler ja tatsächlich an dieser depperten NameVirtualHost-Direktive zu liegen... aber mir will partout nicht auffallen, was da falsch ist...

DaVinciXL
19.07.08, 09:46
Die Lösung rückt näher.
Folgende Änderungen führen zu nachfolgenden Ergebnissen.

In "default" steht jetzt nicht mehr "NameVirtualHost *" sondern "NameVirtualHost *:80".

In "aaaa.de" ist die NameVirtualHost-Zeile auskommentiert und <VirtualHost www.aaaa.de > heißt jetzt <VirtualHost *:80 >.

Analoge Änderungen habe ich auch für "bbbb.de" durchgeführt.

Ergebnisse:

http://meineip -> apache2-default-Seite -> OK.

http://aaaa.de und http://www.aaaa.de -> /var/www/aaaa.de/docs -> OK.

http://bbbb.de und http://www.bbb.de -> apache2-default-Seite -> OOPS.

Roger Wilco
19.07.08, 10:42
Du benutzt NameVirtualHost falsch und bei den VirtualHost Blöcken sollte innerhalb des Tags genau die (und zwar nur 1) mit NameVirtualHost definierte Adresse (nicht Domainname!) stehen.
Also NameVirtualHost nur einmal in der Konfiguration aufführen (bei dir am einfachsten mit `NameVirtualHost *` oder `NameVirtualHost *:80`) und dann "*" oder "*:80" jeweils innerhalb der VirtualHost Tags angeben.

UzumakiNaruto
21.07.08, 14:12
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin root@aaaa.de
ServerName aaaa.de
DocumentRoot /srv/www/htdocs/aaaa.de

<Directory "/srv/www/htdocs/aaaa.de">
Options FollowSymLinks Indexes MultiViews
AllowOverride All
Order allow,deny
allow all
</Directory>
</VirtualHost>

<VirtualHost *:80>
ServerAdmin root@bbbb.de
ServerName bbbb.de
DocumentRoot /srv/www/htdocs/bbbb.de

<Directory "/srv/www/htdocs/bbbb.de">
Options FollowSymLinks Indexes MultiViews
AllowOverride All
Order allow,deny
allow all
</Directory>
</VirtualHost>

DaVinciXL
21.07.08, 14:15
Daran lag's.
Danke ihr beiden!

Pingu
23.07.08, 08:58
Vielleicht das nächste Mal einfach in die Dokumentation sehen: http://httpd.apache.org/docs/2.2/vhosts/name-based.html

DaVinciXL
23.07.08, 10:07
Habe ich ja. Nur habe ich das mit "NameVirtualHost" offensichtlich nicht/falsch verstanden...

Aber immer wieder schön zu sehen, dass sich auch Tage nach Beendigung der Diskussion noch jemand findet, der partout nachtreten muss...

Pingu
23.07.08, 10:57
Ich habe nicht nach getreten als solches. Das was Du wolltest, waren Namens-basierte virtuelle Hosts. Aber das was Du gemacht hast, waren IP-basierte virtuelle Hosts: http://httpd.apache.org/docs/2.2/vhosts/ip-based.html

Wenn ich nach treten wöllte, würde ich Dich noch darauf hinweisen, wie Beispiel-Domains anzugeben sind. Denn RFC2606 beschreibt eindeutig, dass man für Beispiel-Domains example.com, example.org oder example.net nehmen soll und nicht irgendwelche selbst ausgedachten.