Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache VirtualHost Logikfehler
Hi!
Ich bitte euch, mir zu Helfen, weil ich schon alle Varianten durchprobiert habe und einfach nicht auf das Richtige komme :ugly:
VirtualHosts:
domain1.com -> /var/www
domain2.com:443 -> /var/www2
Hätte ich so konfiguriert:
<VirtualHost *>
DocumentRoot /var/www
ServerName domain1.com
<Directory "/var/www">
allow from all
Options +Indexes
</Directory>
ServerAlias 192.168.0.1
</VirtualHost>
<VirtualHost domain2.com:443>
DocumentRoot "/var/www2"
ServerName domain2.com
<Directory "/var/www2">
allow from all
Options +Indexes
</Directory>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/domain2.crt
SSLCertificateKeyFile /etc/apache2/ssl/domain2.key
</VirtualHost>
Funktioniert auch so weit ...
Wenn ich http://domain1.com eingebe komme, ich auf "/var/www"
Wenn ich http://192.168.0.1 (VPN) eingebe, komme ich auf "/var/www"
Wenn ich https://domain2.com eingebe, komme ich verschlüsselt auf "/var/www2"
Aber wieso, wenn ich ich https://domain1.com eingebe, komme ich trotzdem verschlüsselt auf "/var/www2", obwohl domain1.com mit /var/www2 garnichts zu tun hat? :confused:
ich würde oben beim ersten Eintrag noch eine ":80" hinter das Sternchen setzen.
dann noch die globalen Direktiven Listen 80 und Listen 443, damit sollte es gehen.
Roger Wilco
01.01.09, 22:31
Weil namensbasierte VirtualHosts mit SSL nicht ohne weiteres möglich sind. Lies dazu http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html#vhosts.
ServerAlias 192.168.0.1
Diesen Eintrag kannst du dir sparen. Der ist semantisch falsch.
Hi, danke für die Antworten
ich würde oben beim ersten Eintrag noch eine ":80" hinter das Sternchen setzen.
dann noch die globalen Direktiven Listen 80 und Listen 443, damit sollte es gehen.
80 hinter dem Stern habe ich vorher schon versucht, ändert aber garnichts.
Ports habe ich auch schon eingetragen.
# Include ports listing
Include /etc/apache2/ports.conf
ports.conf:
Listen *:80
Listen *:443
Hmmm ... das heißt ich brauch eine zusätzliche IP?
Nicht funktionieren ist eigentlich übertrieben, denn es funktioniert ja größtenteils ...
Wenn beide virtuellen Server HTTP-Server währen, und ich will dass der erste angesprochen wird, dann brauch ich die ServerAlias aber schon ... (oder?)
Roger Wilco
02.01.09, 00:19
Hmmm ... das heißt ich brauch eine zusätzliche IP?
Wenn du beide Domains über HTTPS anbieten willst: Ja.
Wenn beide virtuellen Server HTTP-Server währen, und ich will dass der erste angesprochen wird, dann brauch ich die ServerAlias aber schon ... (oder?)
Nicht den mit der IP-Adresse, denn das ist semantisch falsch. Lies dazu die Dokumentation zur ServerAlias-Direktive.
Nein will ich nicht, nur domain1.com soll SSL haben - habe ich aber geschrieben
domain1.com -> /var/www
domain2.com:443 -> /var/www2
Es funktioniert ja eigentlich alles, aber ich will verhindern, wenn jemand https://domain1.com eingibt auf /var/www2 kommt, obwohl der garnichts damit zu tun hat!
Ok, werde ich lesen, obwohl es vorhin nur funktioniert hatte, wenn ich die IP als Alias reinschreibe, damit er angesprochen wird ...
Sonst könnte es ja genausogut der Zweite sein?:confused:
LG, wOu
Ok ich habs jetzt nochmal auf komplette Basics gestellt:
<VirtualHost domain1.com:*>
DocumentRoot "/var/www"
#NameVirtualHost domain1
ServerName domain1.com
<Directory "/var/www">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
<VirtualHost domain2.com:*>
DocumentRoot "/var/www2"
#NameVirtualHost domain2
ServerName domain2.com
<Directory "/var/www2">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
Dann schreibt er mir:
root@server:~# apache2ctl restart
[Sat Jan 03 02:23:13 2009] [warn] VirtualHost domain1.com:0 overlaps with Virtu alHost domain2.com:0, the first has precedence, perhaps you need a NameVirtual Host directive
Und wenn ich http://domain2.com eingebe, lande ich auf /var/www (von domain1) ... :( :confused:
So, dann entkommentiere ich das #NameVirtualHost bei beiden, folgendes passiert:
root@server:~# apache2ctl restart
[Sat Jan 03 02:26:21 2009] [warn] VirtualHost domain1.com:0 overlaps with VirtualHost domain2.com:0, the first has precedence, perhaps you need a NameVirtualHost directive
[Sat Jan 03 02:26:21 2009] [warn] NameVirtualHost domain1:0 has no VirtualHosts
[Sat Jan 03 02:26:21 2009] [warn] NameVirtualHost domain2:0 has no VirtualHosts
Und das Problem besteht weiter ... also ich denke, es hat nichts mit SSL zu tun, sondern irgendwo ist da ein Logikfehler drinne, wie ich bereits seit Beginn an vermute - bitte um Hilfe!
Schreib es einfach mal so:
NameVirtualHost *
<VirtualHost domain1.com:*>
DocumentRoot "/var/www"
ServerName domain1.com
<Directory "/var/www">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
<VirtualHost domain2.com:*>
DocumentRoot "/var/www2"
ServerName domain2.com
<Directory "/var/www2">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
Das verstehe ich nicht:
Nein will ich nicht, nur domain1.com soll SSL haben - habe ich aber geschrieben
Zitat:
domain1.com -> /var/www
domain2.com:443 -> /var/www2
Irgendwie ist da was verdreht.
Roger Wilco
03.01.09, 12:31
Was soll denn das ':*' im VirtualHost-Tag? Das ist Blödsinn.
Du kannst schlicht nicht verhindern, dass https://domain1.com/ eine Seite ausliefert, wenn domain1.com und domain2.com den gleichen A Resource Record haben ("auf die gleiche IP-Adresse auflösen"). Lies dazu nochmal den von mir genannten Eintrag in der SSL-FAQ vom Apache httpd durch. Für eine "unsaubere" Lösung könntest du auch http://wiki.apache.org/httpd/NameBasedSSLVHosts lesen...
Du kannst schlicht nicht verhindern, dass https://domain1.com/ eine Seite ausliefert, wenn domain1.com und domain2.com den gleichen A Resource Record haben ("auf die gleiche IP-Adresse auflösen").
Achso, na dann habe ich eigentlich eh alles richtig konfiguriert. Aber warum das so ist habe ich nicht wirklich verstanden :confused:
Irgendwie ist da was verdreht.
Ich meine natürlich domain2.com soll SSL haben - und zwar nur die ...
So ist es jetzt:
NameVirtualHost *
<VirtualHost *>
DocumentRoot "/var/www"
ServerName domain1.com
<Directory "/var/www">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
<VirtualHost domain2.com:443>
DocumentRoot "/var/www2"
ServerName domain2.com
<Directory "/var/www2">
allow from all
Options +Indexes
</Directory>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/domain2.crt
SSLCertificateKeyFile /etc/apache2/ssl/domain2.key
</VirtualHost>
Was muss ich jetzt tun, damit ich mit 192.168.0.1 auf /var/www komme?
Roger Wilco
03.01.09, 13:58
<VirtualHost 192.168.0.1:80>
DocumentRoot "/var/www"
# [...]
</VirtualHost>
<VirtualHost 192.168.0.1:443>
DocumentRoot "/var/www2"
# [...]
</VirtualHost>
Ist das nicht ein wenig umständlich? :eek:
Man müsste deshalb ja alle Einstellungen 2x eingeben.
Roger Wilco
03.01.09, 16:12
Nein. Du willst domain1.com nur via HTTP (80/tcp) und domain2.com nur via HTTPS (443/tcp) anbieten. Beide haben die IP-Adresse als A Resource Record. Dann ist das die einfachste Möglichkeit.
Ich meine, dass ich beides 2x mache, nur damit es auch unter der internen IP erreichbar ist
Roger Wilco
03.01.09, 16:43
Syntax für VirtualHost unter http://httpd.apache.org/docs/2.2/mod/core.html#virtualhost anschauen, verstehen und lächeln.
:D
Sie können auch :* angeben, um alle Ports dieser Adresse zu akzeptieren. (Dies wird zusammen mit _default_ empfohlen.)
Dann habe ich das gleich mal gemacht von
<VirtualHost *>
auf
<VirtualHost _default_:*>
gestellt. Zu meiner Verwunderung funktioniert es jetzt :eek: Jedoch verstehe ich den Unterschied immer noch nicht, denn bei "*" hätte er ja auch alles annehmen sollen?! :confused:
Das Zeichen *, welches nur in Kombination mit NameVirtualHost * verwendet wird, um allen IP-Adressen zu entsprechen.
Die Zeichenkette _default_, die nur mit IP-basierten virtuellen Hosts verwendet wird, um nicht zugewiesene IP-Adressen aufzufangen.
Roger Wilco
03.01.09, 17:50
Ich hatte jetzt mehr an folgende Lösung gedacht:
<VirtualHost 192.168.0.1:80 10.0.0.1:80>
# ...
</VirtualHost>
<VirtualHost 192.168.0.1:443 10.0.0.1:443>
SSLEngine on
# ...
</VirtualHost>
Aber wenn deine Variante funktioniert und du glücklich damit wirst, bitte.
Eigentlich schon, ohne error ...
Aber neugierig, wie ich bin habe ich natürlich auch deine Variante ausprobiert:
<VirtualHost 192.168.0.1:80 domain1.com:80>
# ...
</VirtualHost>
<VirtualHost domain2.com:443>
SSLEngine on
# ...
</VirtualHost>
->
root@server:/etc/ssl# apache2ctl restart
[Sat Jan 03 18:24:48 2009] [warn] NameVirtualHost *:0 has no VirtualHosts
LG, wOu
Roger Wilco
03.01.09, 18:36
Die NameVirtualHost-Direktive habe ich absichtlich ausgelassen. Das sind ja keine namensbasierten VirtualHosts mehr...
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.