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 #############