Joel Rosenberg: vhosts + apache2 laufen nciht richtig!!

Hi,

Nach langem verzeifelten suchen und ausprobieren schreibe ich jetzt doch mal meinen eigenen Beitrag in der Hoffnung, dass mir einer helfen kann.

Also...
Ich habe auf meinem Root Apache 2.2 + PHP 5 installiert klappt auch alles so weit wunderbar... über die IP und den DNS-Namen komme ich in mein DocumentRoot...

Jetzt möchte ich aber ein paar vhosts einrichten und diese mit meinen Domains bei Strato "verlinken"...

1. bei Starto habe ich für die Domains als Weiterleitung einfach die IP meines Servers angegeben (hoffe das ist richtig^^)

2. in der httpd.conf hab ich dann den DocumentRoot auskommentiert und die httpd-vhosts.conf included... Diese Datei sieht jetzt bei mir so aus:

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot /usr/local/apache2/htdocs
    ServerName xxx.server4you.de
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@domain1.de
    DocumentRoot /srv/www/vhosts/domain1
    ServerName domain1.de
    ServerAlias www.domain1.de
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@domain2.de
    DocumentRoot /srv/www/vhosts/domain2
    ServerName domain2.de
</VirtualHost>

dann lande ich aber immer im /usr/local/apache2/htdocs also dem ersten DocumentRoot...

wenn ich das * durch die IP ersetzten ändert sich nichts....

dann hab ich probiert jeweils die Domain in das VirtualHost "Tag" zu schreiben also <VirtualHost www.domain1.de> [...] </VirtualHost>
auch das bringt nichts...
Irgendwie hatte ichs auch mal hinbekommen, dass das mit dem anderen DocumentRoot klappte aber auch nur bei der ersten Domain (www.domain1.de) und dafür hatte ich dann wenn ich die IP im Browser eingegeben habe immer nen 403 Permission denied error...

Vielleicht guckt sich das ja einer mal an und kann mir sagen was ich falsch mache....

Vielen Dank,
Joel Rosenberg

  1. Hallo,

    1. bei Starto habe ich für die Domains als Weiterleitung einfach die IP meines Servers angegeben (hoffe das ist richtig^^)

    Also wenn jemand http://xxx.server4you.de/ oder http://www.domain1.de/ oder http://domain2.de/ anfordert, dann wird er _immer_ weitergeleitet zu http://123.231.132.12? Wenn ja, dann kann es nicht gehen.

    NameVirtualHost *:80

    <VirtualHost *:80>
        DocumentRoot /usr/local/apache2/htdocs
        ServerName xxx.server4you.de
    </VirtualHost>

    <VirtualHost *:80>
        ServerAdmin webmaster@domain1.de
        DocumentRoot /srv/www/vhosts/domain1
        ServerName domain1.de
        ServerAlias www.domain1.de
    </VirtualHost>

    <VirtualHost *:80>
        ServerAdmin webmaster@domain2.de
        DocumentRoot /srv/www/vhosts/domain2
        ServerName domain2.de
    </VirtualHost>

    Diese absolut korrekte VirtualHost-Konfiguration setzt darauf, dass das DNS alle diese Hostnamen zu _einer_ IP auflöst, nämlich zu der Deines Servers. Die HTTP-Anforderungen, die darauf hin bei Deinem Server ankämen, sähen dann so aus:

    GET / HTTP/1.1[CRLF]
    Host: xxx.server4you.de[CRLF]

    oder

    GET / HTTP/1.1[CRLF]
    Host: www.domain1.de[CRLF]

    oder

    GET / HTTP/1.1[CRLF]
    Host: domain2.de[CRLF]

    Deine Weiterleitung sieht _immer_ so aus:

    GET / HTTP/1.1[CRLF]
    Host: 123.231.132.12[CRLF]

    dann lande ich aber immer im /usr/local/apache2/htdocs also dem ersten DocumentRoot...

    Ja, denn Wird kein passender virtueller Host gefunden, dann wird der erste angegeben virtuelle Host verwendet, dessen IP-Adresse paßt. Und bei Deinem Server kommt als Hostname immer die IP aus der Weiterleitung an.

    Du musst erreichen, dass alle Deine VirtualHosts vom DNS zu Deiner Server-IP aufgelöst werden, so dass die oben beispielhaft angeführten HTTP-Anforderungen an diesr IP:Port80 ankommen. Eine Weiterleitung zu immer einer IP bringt da nichts.

    viele Grüße
    Axel

  2. hallo,

    dann lande ich aber immer im /usr/local/apache2/htdocs also dem ersten DocumentRoot...

    Also hat dein Server keinen Zugriff auf /srv/www/vhosts.

    Schau mal in deiner httpd.conf nach der Stelle, wo es einen Container
    <Directory />
     ...
    </Directory>
    gibt. Direkt darunter schreibst du einen weiteren Container hinzu:
    <Directory /srv/www/vhosts/domainx>
       ...
    </Directory>

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. echo $begrüßung;

      Schau mal in deiner httpd.conf nach der Stelle, wo es einen Container
      <Directory />
      ...
      </Directory>
      gibt. Direkt darunter schreibst du einen weiteren Container hinzu:
      <Directory /srv/www/vhosts/domainx>
         ...
      </Directory>

      Übersichtlicher finde ich es, diese Directory-Direktiven für die VHost-DocumentRoots mit in die jeweilige VHost-Konfiguration aufzunehmen, statt sie an einer anderen Stelle zu pflegen.

      echo "$verabschiedung $name";