apache Virtual Hosts, suse10.0 => apache nimmt den falschen virta ul host
Hallo, ich bin grade dabei, von einem (funtionierenden) suse8.1 mit apache 1.3.26 auf ein suse10.0 mit apache2 2.0.54 umzuziehen, ich benutzte apache-prefork. Das System hat mehrere Virtual hosts auf derselben IP-Adresse. Ich habe die alte virtualhosts.conf per script in Einzeldateien zerlegt, die jetzt in /etc/apache2/vhosts.d mit der Endung .conf liegen. Diese sehen wie unten aus (Beispiel 1.conf=mytest.de, 2.conf=www.pfurz.mytest.de, da sind noch eine Handvoll weitere .conf-Dateien, aber alle in demselben Stil, auch andere sld mytest.de). IP-Adresse<->fqn am Client in die /etc/hosts eingetragen, die Domains durchgebrowsed, alle nehmen die erste .conf-Datei, also in diesem Fall mytest.de. Ich habe auch mit telnet http gesprochen, von Hand die Host:-Zeile eingegeben und gleichzeitig mit strace den Apache-Prozess getraced, es kommt etwa folgendes raus: telnet 21x.1x.1xx.6x 80 Trying 21x.1x.1xx.6x... Connected to 21x.1x.1xx.6x. Escape character is '^]'. GET / HTTP/1.1 Host: www.pfurz.mytest.de HTTP/1.1 200 OK Date: Wed, 01 Feb 2006 15:43:00 GMT Server: Apache/2.0.54 (Linux/SUSE) Last-Modified: Fri, 17 Jan 2003 00:35:00 GMT ETag: "35145-5a-57ec5500" Accept-Ranges: bytes Content-Length: 90 Content-Type: text/plain [..] mit lsof -P | grep IPv die pid ermittelt, mit strace -p <pid> attached, und es kam sowas raus: 23683 poll([{fd=366, events=POLLIN, revents=POLLIN}], 1, 300000) = 1 23683 read(366, "Host: www.pfurz.mytest.de\r\n", 8000) = 27 23683 poll([{fd=366, events=POLLIN, revents=POLLIN}], 1, 300000) = 1 23683 read(366, "\r\n", 8000) = 2 23683 stat64("/kunden/www1/test01/neumytest.de/", {st_mode=S_IFDIR|0751, st_size=184, ...}) = 0 23683 lstat64("/kunden", {st_mode=S_IFDIR|0755, st_size=96, ...}) = 0 23683 lstat64("/kunden/www1", {st_mode=S_IFDIR|0755, st_size=816, ...}) = 0 23683 lstat64("/kunden/www1/test01", {st_mode=S_IFDIR|0711, st_size=1328, ...}) = 0 23683 lstat64("/kunden/www1/test01/neumytest.de", {st_mode=S_IFDIR|0751, st_size=184, ...}) = 0 23683 open("/kunden/www1/test01/neumytest.de/.htaccess", O_RDONLY) = -1 ENOENT (No such file or directory) Also eindeutig: er bekommt den richtigen vhost aber versucht nichtmal, ins richtige Directory zu gehen. apachectrl sagt aber, die vhosts existieren. apache2/virthosts# apache2ctl -S |& grep mytest mytest.de (/etc/apache2/vhosts.d/1.conf:1) www.mytest.de (/etc/apache2/vhosts.d/2.conf:1) www.pfurz.mytest.de (/etc/apache2/vhosts.d/3.conf:1) Ist eventuell der Fehler bekannt bzw. weiss jemand eine Lösung oder einen Workaround? Viele Grüße, Florian ----------------------------- Configs der Virtual Hosts: ######### 1.conf ############# <VirtualHost *> DocumentRoot /www/test01/neumytest.de ServerName mytest.de ErrorLog /www/test01/neumytest.de/log/mytest.de/error-log CustomLog /www/test01/neumytest.de/log/mytest.de/access-log combined HostnameLookups Off UseCanonicalName Off ServerSignature On <Directory /www/test01/neumytest.de> Options -FollowSymLinks +SymLinksIfOwnerMatch AllowOverride Limit AuthConfig FileInfo </Directory> AccessFileName .htaccess DirectoryIndex index.cgi index.html index.htm start.html start.htm index.php3 index.php4 index.php index.xhtml ScriptAlias /cgi-bin /www/test01/neumytest.de/cgi-bin/ RLimitCPU 300 RLimitMEM 64000000 SuexecUserGroup test01 www </VirtualHost> ######### 3.conf ############# <VirtualHost *> DocumentRoot /www/test01/mytest.de/www.pfurz ServerName www.pfurz.mytest.de ErrorLog /www/test01/mytest.de/www.pfurz/log/www.pfurz.mytest.de/error-log CustomLog /www/test01/mytest.de/www.pfurz/log/www.pfurz.mytest.de/access-log combined HostnameLookups Off UseCanonicalName Off ServerSignature On <Directory /www/test01/mytest.de/www.pfurz> Options -FollowSymLinks +SymLinksIfOwnerMatch AllowOverride Limit AuthConfig FileInfo </Directory> AccessFileName .htaccess DirectoryIndex index.cgi index.html index.htm start.html start.htm index.php3 index.php4 index.php index.xhtml ScriptAlias /cgi-bin /www/test01/mytest.de/www.pfurz/cgi-bin/ RLimitCPU 300 RLimitMEM 64000000 </VirtualHost>
Koelln, Florian wrote:
Hallo,
ich bin grade dabei, von einem (funtionierenden) suse8.1 mit apache 1.3.26 auf ein suse10.0 mit apache2 2.0.54 umzuziehen, ich benutzte apache-prefork. Das System hat mehrere Virtual hosts auf derselben IP-Adresse.
Ich habe die alte virtualhosts.conf per script in Einzeldateien zerlegt, die jetzt in /etc/apache2/vhosts.d mit der Endung .conf liegen. Diese sehen wie unten aus (Beispiel 1.conf=mytest.de, 2.conf=www.pfurz.mytest.de, da sind noch eine Handvoll weitere .conf-Dateien, aber alle in demselben Stil, auch andere sld mytest.de).
IP-Adresse<->fqn am Client in die /etc/hosts eingetragen, die Domains durchgebrowsed, alle nehmen die erste .conf-Datei, also in diesem Fall mytest.de.
Hmm ich sehe nicht gerade etwas, aber eine Möglichkeit wäre, dass deine vhosts gar nicht zum Zug kommen und du inetwa dasselbe wie im ersten vhost als default konfiguriert hast? Gibts noch einen _default_ virtualhost oder hast du im globalen kontext auch das documentroot auf jenes Verzeichnis gesetzt? Ändere mal jene pfade woandershin dass du die unterscheiden kannst - sprich ob die vhosts überhaupt funktionieren. Wenn dies der Fall wäre überprüfe mal deine NameVirtualhost directive... Vielleicht hilfts ja Matti
participants (2)
-
Koelln, Florian
-
Matthias Keller