Apache2 VHOST Problem
Toby
- webserver
0 Edgar Ehritt0 Toby0 Edgar Ehritt0 Toby0 Toby0 Toby0 Toby0 Edgar Ehritt
0 Edgar Ehritt
0 Christoph Jeschke
0 Toby
Hallo zusammen, es ist mal wieder an der Zeit das ich von diesem tollen Forum wieder mal gebrauch mache.
Komme wir ohne großes Gesülze direkt zu dem Problem:
Ich habe einen root, auf dem Debian lenny und ua ein Apache 2.2.xx läuft.
Der Server ist über eine IP Adresse 123.123.123.123 zu erreichen.
ich habe eine Domain: www.domain1.com
und eine Domain: www.domain2.com
www.domain1.com zeigt auf 123.123.123.123
www.domain2.com zeugt auf 123.123.123.123/ordner
Nach einer Umstellung der Domain verweise möchte ich nun Vhosts benutzen. Derzeit ist es mir lediglich nur möglich eine Domain zu verändern was die "Verlinkung" angeht, was heißt das der Server einmal einen Vhost bieten muss der auf www.domain1.com reagiert und gleichzeitig auch noch per IP ansprechbar ist.
So weit so gut.. lege ich einen VHost an der auf www.domain1.com reagiert funktioniert das einwandfrei, wenn ich dann einen weiteren anlege, der als std Eintrag dienen soll und den Server per IP ansprechbar machen soll klappt das wieder rum nicht, oder genauer gesagt, der Vhost der in der Config steht wird immer benutzt.
Derzeitige Vhost config:
NameVirtualHost 123.123.123.123
<VirtualHost 123.123.123.123:*>
DocumentRoot /var/www/
</VirtualHost>
<VirtualHost 123.123.123.123:80>
ServerName www.domain1.com
ServerAlias domain1.com www.domain1.com
DocumentRoot /var/www/domain1/
ServerAdmin admin@domain1.com
</VirtualHost>
Rufe ich jetzt www.domain1.com auf, wird /var/www geladen (wie default vhost)
Rufe ich www.domain2.com auf, wird /var/www/ordner geladen (wwie es auch sein soll)
Okay, nun denke ich mir.. klar der erste Eintrag reagiert auf alles also kommt der zweite garnicht mehr zum einsatz.. okay einfach umdrehen:
Wenn ich nun den zweiten an erster Schreib, und www.domain1.com aufrufe, wird korrekter weise auf /var/www/domain1/ gezeigt.
Rufe ich nur 123.123.123.123 auf, wird ebenfalls auf /var/www/domain1/ gezeigt.
Rufe ich www.domain2.com auf, wird versucht /var/www/domain1/ordner zu öffnen.
In /etc/hosts habe ich folgendes hinzugefügt:
www.domain1.com 123.123.123.123
Weiß da einer Rat? Sieht jemand den Fehler den ich begehe?
Vielen Dank schonmal im vorraus für jede Hilfe, und falls ich etwas zu undeutlich/unverständlich beschrieben hab, einfach fragen
Grüße
Toby
Hallo,
www.domain1.com zeigt auf 123.123.123.123
www.domain2.com zeugt auf 123.123.123.123/ordnerNameVirtualHost 123.123.123.123
<VirtualHost 123.123.123.123:*>
DocumentRoot /var/www/
</VirtualHost><VirtualHost 123.123.123.123:80>
ServerName www.domain1.com
ServerAlias domain1.com www.domain1.com
DocumentRoot /var/www/domain1/
ServerAdmin admin@domain1.com
</VirtualHost>
hier stimmt bereits Dein Problemvortrag nicht mit der Konfiguration überein...
NameVirtualHost *:80
<VirtualHost *:80>
# default host
# nimmt alles an, was nicht domain1.com oder domain2.com ist
DocumentRoot /var/www/
# ^^^^^^^^^
</VirtualHost>
<VirtualHost *:80>
ServerName www.domain1.com
ServerAlias domain1.com www.domain1.com
DocumentRoot /var/www/
# ^^^^^^^^^
ServerAdmin admin@domain1.com
</VirtualHost>
<VirtualHost *:80>
ServerName www.domain2.com
ServerAlias domain1.com www.domain2.com
DocumentRoot /var/www/domain1/
ServerAdmin admin@domain1.com
</VirtualHost>
Das kannst Du dann unter http://httpd.apache.org/docs/2.2/vhosts/name-based.html selbständig nachvollziehen.
Gruß aus Berlin!
eddi
Hi eddi,
also ich sehe grade nicht wo meine Problembeschreibung fehlerhaft ist.
www.domain2.com linkt auf 123.123.123.123/ordner
also macht das keinen unterschied ob man die Anfrage per www.domain2.com oder per 123.123.123.123/ordner macht. Demzufolge muss domain2.com auch nicht in der VHost config erwähnen.
Oder sehe ich das falsch?
grüße
Toby
Re:
www.domain2.com linkt auf 123.123.123.123/ordner
Wie denn das? domain2.com ist nicht konfiguriert und fällt folglich auf den default host zurück. Was Du hier versuchst klar zu stellen, hieße, wenn der default host als DocumentRoot /var/www/ hat, dass /var/www/ gleich /var/www/ordner/ wäre.
also macht das keinen unterschied...
Offensichtlich funktioniert Dein Ansatz nicht. Bitte nimm Dir Zeit zum Verständnis der Zusammenhänge, nimm den Verweis auf das Manual des Apachen ernst und lies!
Gruß aus Berlin!
eddi
Re:
www.domain2.com linkt auf 123.123.123.123/ordner
Wie denn das? domain2.com ist nicht konfiguriert und fällt folglich auf den default host zurück. Was Du hier versuchst klar zu stellen, hieße, wenn der default host als
DocumentRoot /var/www/hat, dass /var/www/ gleich /var/www/ordner/ wäre.
Genau das ist was ich ja auch machen möchte wenn domain2.com aufgerufen wird, soll /var/www/ordner/ aufgerufen werden klar, so ist es ja auch richtig funktioniert aber nur wenn ich den default vhost nach vorne stelle, tue ich das nicht und setze den vhost der domain1 behandeln soll nach vorne wird immer auf /var/www/domain/XXXXX verlinkt, und das ist einfach falsch!
weil warum spring mein domain1.com vhost auf 123.123.123.123 an?????
ich habe mir nicht nur dieses doku durchgelesen und fürchte und du verstehst mein problem einfach nicht :/
ZU EINFACHHEIT lasst domain2.com komplett aus dem Spiel:
ich möchte das per www.domain1.com der ordner /var/www/domain1/ aufgerufen wird.
gleichzeitig soll es ein default vhost geben der alle anderen anfragen auf /var/www/ verlegt.
grüße
Toby
NOCHMAL UMS KLARZUSTELLEN:
www.domain2.com ist vom PROVIDER aus so eingestellt das sie auf 123.123.123.123/ordner linkt. Deswegen habe ich vorerst keine Konfiguration per VHOST für diese vorgesehen!
Sprich sie müsste vom default vhost bearbeitet werden und somit im endeffekt den ordner /var/www/ordner ausgeben!
aber wie gesagt, lasst sie ausm Spiel macht keinen Unterschied für mein Problem
danke @ eddi für deine Hilfe bisher
grüße Toby
Hallo eddi
ja ich meine eine Http weiterleitung.. ich kann die weiterleitung optionen von www.domain2.com leider nicht einsehen da dies nicht meine domain ist.
Mich wunderts nur, wenn ich den default block nach oben setze, wird bei www.domain2.com /var/www/ordner aufgerufen (genau wie es soll).
Das problem ist natürlich wenn der default-block oben steht, das kein anderer Vhost mehr dran genommen wird. also würde ich gerne den default block nach unten setzen, tu ich dies, wird aber eben falls immer nur der erste behandelt!
Ich glaub wird reden total aneinander vorbei :/
Ich versuche es hier nocheinmal deutlich zu machen wo genau mein problem liegt, lasse dabei domain2 aus dem spiel:
Bei folgender Konfiguration...
NameVirtualHost 123.123.123.123
<VirtualHost 123.123.123.123:*>
DocumentRoot /var/www/
</VirtualHost>
<VirtualHost 123.123.123.123:80>
ServerName www.domain1.com
ServerAlias domain1.com www.domain1.com
DocumentRoot /var/www/domain1/
ServerAdmin admin@domain1.com
</VirtualHost>
komme ich zu folgendem Ergebnis:
http://123.123.123.123 => /var/www/
http://www.domain1.com => /var/www/
http://123.123.123.123 => /var/www/
Das ist vollkommen logisch und nachvollziehbar!
Jetzt das was ich nicht verstehe:
Bei folgender Konfiguration...
NameVirtualHost 123.123.123.123
<VirtualHost 123.123.123.123:80>
ServerName www.domain1.com
ServerAlias domain1.com www.domain1.com
DocumentRoot /var/www/domain1/
ServerAdmin admin@domain1.com
</VirtualHost>
<VirtualHost 123.123.123.123:*>
DocumentRoot /var/www/
</VirtualHost>
..komme ich zu diesem Ergebnis:
http://123.123.123.123 => /var/www/domain1/ [FALSCH]
http://www.domain1.com => /var/www/domain1/ [RICHTIG]
http://123.123.123.123 => /var/www/domain1/ordner [FALSCH]
Wieso nimmt der erste VHOST alle Anfragen entgegen und reagiert nicht nur auf www.domain1.com??
Das ist mein Problem!
grüße
Toby
thx @ eddi für jeden weiteren ansatz :)
EDIT
erstes ergebnis sieht natürlich so aus:
http://123.123.123.123 => /var/www/
http://www.domain1.com => /var/www/
http://123.123.123.123/ordner => /var/www/ordner
EDIT
erstes ergebnis sieht natürlich so aus:
http://123.123.123.123 => /var/www/
http://www.domain1.com => /var/www/
http://123.123.123.123/ordner => /var/www/ordner
Hi eddi,
da oben sind einige flüchtigkeits fehler meinerseits drinne, entschuldige.
Ich weiß das der erste Block der default block ist und immer dann zu Verwendung kommt wenn keiner anderer Block die Anfrage entgegennimmt.
kurz die richtigen Ergebnisse die ich oben vermasselt hab:
erstes:
http://123.123.123.123 => /var/www/
http://www.domain1.com => /var/www/
http://123.123.123.123/ordner => /var/www/ordner
zweites:
http://123.123.123.123 => /var/www/domain1/ [FALSCH]
http://www.domain1.com => /var/www/domain1/ [RICHTIG]
http://123.123.123.123/ordner => /var/www/domain1/ordner [FALSCH]
---
Das einzige was mir jetzt einen Tick weitergeholfen hat, ist das mein Block der alle andere entgegennimmt keinen Servernamen trägt. Naja, dies hatte ich gestern schon ausprobiert also dem block den Servernamen 123.123.123.123 zugeben, leider erfolglos :( da ich gestern sehr wenig Zeit hatte, werd ich es aber heute nocheinmal probieren.
Danke für deine Hilfe bisher, auch danke für Verweise auf die Doku aber wie gesagt die hab ich bereits gelesen. Was da nicht drinsteht oder ich zumindest nicht gesehen hab, das ich VHOST ohne ServerNamen nicht auf alles andere reagiert. Ich dachte das würde dem: "ServerName *" gleich kommen... so müsste es doch dann gehen, oder geht das Syntax mäßig nicht? Ich werds heute abend sobald ich von der Arbeit komme einmal ausprobieren.
grüße
Toby
.. meine weiteren Versuche mit dem ServerName 123.123.123.123 verliefen erfolglos... weiß sonst noch jemand rat?
hier nochmal eine problem beschreibung:
http://phpforum.de/forum/showthread.php?t=243578
gruß
Toby
Re:
NameVirtualHost 123.123.123.123
<VirtualHost 123.123.123.123:*>
# default host
DocumentRoot /var/www/
</VirtualHost><VirtualHost 123.123.123.123:80>
ServerName www.domain1.com
ServerAlias domain1.com www.domain1.com
DocumentRoot /var/www/domain1/
ServerAdmin admin@domain1.com
</VirtualHost>komme ich zu folgendem Ergebnis:
http://123.123.123.123 => /var/www/
http://www.domain1.com => /var/www/
http://123.123.123.123 => /var/www/
Wieso sollte http://123.123.123.123 etwas anderes ergeben als http://123.123.123.123?
NameVirtualHost 123.123.123.123
<VirtualHost 123.123.123.123:80>
# default host
ServerName www.domain1.com
ServerAlias domain1.com www.domain1.com
DocumentRoot /var/www/domain1/
ServerAdmin admin@domain1.com
</VirtualHost><VirtualHost 123.123.123.123:*>
# der host wird nie aufgerufen ihm fehlt ein ServerName
# Anfragen an 123.123.123.123 werden vom default host serviert
# vermutlich ist das Dein eigentliches Problem
DocumentRoot /var/www/
ServerName 123.123.123.123
</VirtualHost>
..komme ich zu diesem Ergebnis:
http://123.123.123.123 => /var/www/domain1/ [FALSCH]
http://www.domain1.com => /var/www/domain1/ [RICHTIG]
http://123.123.123.123 => /var/www/domain1/ordner [FALSCH]Wieso nimmt der erste VHOST alle Anfragen entgegen und reagiert nicht nur auf www.domain1.com??
Wieso ergibt http://123.123.123.123 etwas anderes als http://123.123.123.123? Der default host hat den ServerName www.domain1.com, den ServerAlias domain1.com und www.domain1.com. Er reagiert also auf eine Anfrage nach http://www.domain1.com völlig logisch und serviert aus der vorkonfigurierten DocumentRoot /var/www/domain1/. Dies hast Du selbst als "[RICHTIG]" gekennzeichnet. Warum sollte jetzt auf einmal der Server keine Anfragen für www.domain1.com entgegennehmen?
Ich schrieb es Dir bereits, dass der erstmalig notierte <VirtualHost>-Block immer der default host ist. Eine domainlose Anfrage wird von diesem
Gruß aus Berlin!
eddi
Re:
www.domain2.com linkt auf 123.123.123.123/ordner
Wie denn das? domain2.com ist nicht konfiguriert und fällt folglich auf den default host zurück. Was Du hier versuchst klar zu stellen, hieße, wenn der default host als
DocumentRoot /var/www/hat, dass /var/www/ gleich /var/www/ordner/ wäre.Genau das ist was ich ja auch machen möchte wenn domain2.com aufgerufen wird, soll /var/www/ordner/ aufgerufen werden klar, so ist es ja auch richtig funktioniert aber nur wenn ich den default vhost nach vorne stelle, tue ich das nicht und setze den vhost der domain1 behandeln soll nach vorne wird immer auf /var/www/domain/XXXXX verlinkt, und das ist einfach falsch!
weil warum spring mein domain1.com vhost auf 123.123.123.123 an?????ich habe mir nicht nur dieses doku durchgelesen und fürchte und du verstehst mein problem einfach nicht :/
Warum hast Du nach dem Lesen der verlinkten Dokumentation nicht verstanden, dass der erstmalig notierte <VirtualHost>-Block immer der default host ist? Das allein genügt, um zu verstehen, wie Dein Problem zu lösen ist. Ich hatte Dich nicht grundlos, wenngleich umsonst, mit "Wie denn das?" gefragt, wie Dein provider domain2.com verlinkt. Du hast die Frage nicht beantwortet.
ZU EINFACHHEIT lasst domain2.com komplett aus dem Spiel:
ich möchte das per www.domain1.com der ordner /var/www/domain1/ aufgerufen wird.
gleichzeitig soll es ein default vhost geben der alle anderen anfragen auf /var/www/ verlegt.
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/
</VirtualHost>
<VirtualHost *:80>
ServerName www.domain1.com
ServerAlias domain1.com
DocumentRoot /var/www/domain1/
ServerAdmin admin@domain1.com
</VirtualHost>
NOCHMAL UMS KLARZUSTELLEN:
www.domain2.com ist vom PROVIDER aus so eingestellt das sie auf 123.123.123.123/ordner linkt. Deswegen habe ich vorerst keine Konfiguration per VHOST für diese vorgesehen!
Sprich sie müsste vom default vhost bearbeitet werden und somit im endeffekt den ordner /var/www/ordner ausgeben!
Dieses kann und wird nicht funktionieren, weil die Aussage "/var/www/" == "/var/www/ordner" per Konfiguration nicht als wahr machbar ist. Du wirst also für domain2.com einen <VirtualHost>-Block notieren müssen. Wenn Du mit "linkt" eine HTTP-Weiterleitung meinst, dann ist dies etwas anderes. Es ist meines Erachtens einfach nur eine dumme Krücke für mangelhafte Konfiguration.
Gruß aus Berlin!
eddi
Guten Tag,
hier stimmt bereits Dein Problemvortrag nicht mit der Konfiguration überein...
Ja, das ist mir auch aufgefallen.
NameVirtualHost *:80
<VirtualHost *:80>
# default host
# nimmt alles an, was nicht domain1.com oder domain2.com ist
DocumentRoot /var/www/
# ^^^^^^^^^
</VirtualHost><VirtualHost *:80>
ServerName www.domain1.com
ServerAlias domain1.com www.domain1.com
DocumentRoot /var/www/
# ^^^^^^^^^
ServerAdmin admin@domain1.com
</VirtualHost><VirtualHost *:80>
ServerName www.domain2.com
ServerAlias domain1.com www.domain2.com
DocumentRoot /var/www/domain1/
ServerAdmin admin@domain1.com
</VirtualHost>
Warum definierst du zwei mal domain1.com als ServerAlias?
Gruß
Christoph Jeschke
--
Zend Certified Engineer
Certified Urchin Admin
Selfcode: sh:( fo:) ch:? rl:? br:& n4:( ie:( mo:) va:} de:] zu:$ fl:( ss:} ls:& ja:|
Morgen,
ServerAlias domain1.com www.domain2.com
Warum definierst du zwei mal domain1.com als ServerAlias?
- pure Schlamperei; Entschuldigung
Gruß aus Berlin!
eddi
Immer noch ungelöst, weiß keiner Rat?
http://phpforum.de/forum/showthread.php?t=243578
Hallo Toby,
Immer noch ungelöst, weiß keiner Rat?
es besteht definitiv ein Unterschied zwischen den beiden unten stehenden Konfigurationen, der Dir nach Deiner ersten Frage im verlinken Forum offensichtlich immer noch nicht klar geworden ist:
### conf 1 ###
NameVirtualHost 123.123.123.123:*
<VirtualHost 123.123.123.123:*>
DocumentRoot /var/www/
</VirtualHost>
<VirtualHost 123.123.123.123:80>
ServerName domain.com
ServerAlias domain.com www.domain.com
DocumentRoot /var/www/domain/
</VirtualHost>
### conf 2 ###
NameVirtualHost 123.123.123.123:*
<VirtualHost 123.123.123.123:*>
DocumentRoot /var/www/
</VirtualHost>
<VirtualHost 123.123.123.123:*>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /var/www/domain/
</VirtualHost>
Kurz und bündig: "123.123.123.123:*" ist nicht das gleiche wie "123.123.123.123:80"!
Gruß aus Berlin!
eddi