Toby: Apache2 VHOST Problem

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

  1. Hallo,

    www.domain1.com zeigt auf 123.123.123.123
    www.domain2.com zeugt auf 123.123.123.123/ordner

    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>

    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

    --
    Könnte bitte jemand mal langsam dafür sorgen, dass da draußen nicht dauernd die Filmrolle "Planet der Affen" abgedudelt wird? Danke!
    1. 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

      1. 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

        --
        Könnte bitte jemand mal langsam dafür sorgen, dass da draußen nicht dauernd die Filmrolle "Planet der Affen" abgedudelt wird? Danke!
        1. 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

          1. 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

            1. 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 :)

              1. 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

                1. 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

                  1. .. 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

              2. 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

                --
                Könnte bitte jemand mal langsam dafür sorgen, dass da draußen nicht dauernd die Filmrolle "Planet der Affen" abgedudelt wird? Danke!
          2. 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

            --
            Könnte bitte jemand mal langsam dafür sorgen, dass da draußen nicht dauernd die Filmrolle "Planet der Affen" abgedudelt wird? Danke!
    2. 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:|
      
      1. Morgen,

        ServerAlias  domain1.com www.domain2.com
        Warum definierst du zwei mal domain1.com als ServerAlias?

        - pure Schlamperei; Entschuldigung

        Gruß aus Berlin!
        eddi

        --
        Könnte bitte jemand mal langsam dafür sorgen, dass da draußen nicht dauernd die Filmrolle "Planet der Affen" abgedudelt wird? Danke!
  2. Immer noch ungelöst, weiß keiner Rat?

    http://phpforum.de/forum/showthread.php?t=243578

    1. 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

      --
      Könnte bitte jemand mal langsam dafür sorgen, dass da draußen nicht dauernd die Filmrolle "Planet der Affen" abgedudelt wird? Danke!