Hallo,
ich beackere einen Debian-Squeeze-Webserver, der mit einer Domain verbandelt ist.
Diese soll einem Verzeichnis in /var/www als vHost zugeordnet werden, damit man bei Aufrufen der Adresse genau dort landet (ist ne Typo3-Installation).
Gleichzeitig sollen aber auch weitere Unterverzeichnisse von /var/www auf diesem Server per http://ip-adresse/directory erreichbar sein.
apache2ctl -S spricht:
default server server.domain.tld (/etc/apache2/sites-enabled/000-default:1) port 80 namevhost server.domain.tld (/etc/apache2/sites-enabled/000-default:1) port 80 namevhost server.domain.tld (/etc/apache2/sites-enabled/server.domain.tld:1)
Momentan wird der Domain-Aufruf von 'default' entgegengenommen, d.h. ich lande auf der Apache-It-works-Seite.
Aufruf per http://ip-adresse/directory/ klappt.
Die extra vHost-Konfig (/etc/apache2/sites-enabled/server.domain.tld) wird aber offenbar nicht berücksichtigt.
Geht diese Mischung (vHost + Directory) überhaupt? Oder sitzt da schon der Denkfehler?
Wo und wie sag ich's dem Apachen?
Danke & Grüße,
Bernhard
Moin moin,
Bernhard Bittner Bernhard.Bittner@gmx.net (Do 07 Feb 2013 10:23:31 CET):
Diese soll einem Verzeichnis in /var/www als vHost zugeordnet werden, damit man bei Aufrufen der Adresse genau dort landet (ist ne Typo3-Installation).
Gleichzeitig sollen aber auch weitere Unterverzeichnisse von /var/www auf diesem Server per http://ip-adresse/directory erreichbar sein.
apache2ctl -S spricht:
default server server.domain.tld (/etc/apache2/sites-enabled/000-default:1) port 80 namevhost server.domain.tld (/etc/apache2/sites-enabled/000-default:1) port 80 namevhost server.domain.tld (/etc/apache2/sites-enabled/server.domain.tld:1)
Momentan wird der Domain-Aufruf von 'default' entgegengenommen, d.h. ich lande auf der Apache-It-works-Seite.
Aufruf per http://ip-adresse/directory/ klappt.
Die extra vHost-Konfig (/etc/apache2/sites-enabled/server.domain.tld) wird aber offenbar nicht berücksichtigt.
Du bist Dir sicher, daß in sites-enabled/server.domain.tld die „ServerName“-Direktive verwendet wird? Etwa so:
<VirtualHost *:80> ServerName server.domain.tld … </VirtualHost>
Geht diese Mischung (vHost + Directory) überhaupt? Oder sitzt da schon der Denkfehler?
Du mußt „NameVirtualHost *:80“ gesetzt haben (Debian: /etc/apache2/ports.conf) Vermutlich hast Du das, wenn ich die Ausgabe von „apache2ctl -S“ richtig deute. Was dort steht, muß zur Angabe in <VirtualHost …> passen.
Wenn *jeder* Aufruf von der default-Konfig entgegegn genommen wird, dann paßt der Aufruf nicht zum Servernamen server.domain.tld. Der Apache prüft einfach den Host:-Header des Requests gegen alle ServerName oder ServerAlias-Direktiven in den VirtualHost-Abschnitten. Findet er keinen Treffer, nimmt er den *ersten* Virtuellen Host, den er gesehen hatte. Welcher das ist, hängt von der Namensgebeung der Files/Links in sites-enabled/ ab, sie werden alphabetisch sortiert.
Und im Default-Host solltest Du dann eben keinen ServerNamen eingetragen haben, sonst findet er ja den schon als server.domain.tld, und nicht die VirtualHost-Config, die etwas später gelesen wird und den selben ServerName hat.
Vielleicht hilft Dir das etwas weiter.
Best regards from Dresden/Germany Viele Grüße aus Dresden Heiko Schlittermann
Am 07.02.2013, 11:05 Uhr, schrieb Heiko Schlittermann hs@schlittermann.de:
hiho,
snip
Du bist Dir sicher, daß in sites-enabled/server.domain.tld die „ServerName“-Direktive verwendet wird? Etwa so:
ja, höchstpersönlich eingetragen :-)
Geht diese Mischung (vHost + Directory) überhaupt? Oder sitzt da schon der Denkfehler?
Du mußt „NameVirtualHost *:80“ gesetzt haben (Debian: /etc/apache2/ports.conf) Vermutlich hast Du das, wenn ich die Ausgabe von „apache2ctl -S“ richtig deute. Was dort steht, muß zur Angabe in <VirtualHost …> passen.
ist so drin - das war standardmäßig.
Wenn *jeder* Aufruf von der default-Konfig entgegegn genommen wird, dann paßt der Aufruf nicht zum Servernamen server.domain.tld. Der Apache prüft einfach den Host:-Header des Requests gegen alle ServerName oder ServerAlias-Direktiven in den VirtualHost-Abschnitten. Findet er keinen Treffer, nimmt er den *ersten* Virtuellen Host, den er gesehen hatte. Welcher das ist, hängt von der Namensgebeung der Files/Links in sites-enabled/ ab, sie werden alphabetisch sortiert.
da wird '000-default' immer gewinnen, oder? kann ich ja testweise mal umbenennen.
Und im Default-Host solltest Du dann eben keinen ServerNamen eingetragen haben, sonst findet er ja den schon als server.domain.tld, und nicht die VirtualHost-Config, die etwas später gelesen wird und den selben ServerName hat.
da ist willentlich keiner drin, hab dort nur
<Directory /var/www/> AllowOverride All statt 'None' eingetragen
Vielleicht hilft Dir das etwas weiter.
Was mich wundert, ist die Ignoranz ggü. der ServerName-Direktive, wenn die Konfig an den üblichen Verdächtigen i.O. ist?
Im Netz gab's noch diverse Hinweise zu /etc/hosts - muß da was rein?
Hab mit und ohne Eintrag keine Veränderung festgestellt. Oder hätte ich da noch nen Dienst restarten müssen?
Der Server läuft, im Unterschied zu nem anderen System, auf das ich vergleichend zugreife, übrigens intern auf ner 10.x.y.z-IP. Aber spielt das ne Rolle, solange er von außen erreichbar ist?
snip
Danke & Grüße,
Bernhard
Bernhard Bittner Bernhard.Bittner@gmx.net (Do 07 Feb 2013 11:44:38 CET):
Am 07.02.2013, 11:05 Uhr, schrieb Heiko Schlittermann
Welcher das ist, hängt von der Namensgebeung der Files/Links in sites-enabled/ ab, sie werden alphabetisch sortiert.
da wird '000-default' immer gewinnen, oder? kann ich ja testweise mal umbenennen.
Ja, die wird zuerst gelesen und stellt damit dann auch den Default-VHost zur verfügung. (Wenn die anderen Files eben im Alphabet später kommen.)
Und im Default-Host solltest Du dann eben keinen ServerNamen eingetragen haben, sonst findet er ja den schon als server.domain.tld, und nicht die VirtualHost-Config, die etwas später gelesen wird und den selben ServerName hat.
da ist willentlich keiner drin, hab dort nur
<Directory /var/www/> AllowOverride All statt 'None' eingetragen
Vielleicht hilft Dir das etwas weiter.
Was mich wundert, ist die Ignoranz ggü. der ServerName-Direktive, wenn die Konfig an den üblichen Verdächtigen i.O. ist?
Im Netz gab's noch diverse Hinweise zu /etc/hosts - muß da was rein?
Nein. Blöde Frage: Neu geladen (apache2ctl graceful) hast Du die Konfiguration schon mal?
Wie sieht im Browser die URL aus, mit der Du das versuchst? Paßt die 1:1 zum ServerName? Denn der Browser bestimmt ja letztlich den Host-Header im HTTP-Protokoll, und genau nach diesem Header richtet sich dann der Apache.
vergleichend zugreife, übrigens intern auf ner 10.x.y.z-IP. Aber spielt das ne Rolle, solange er von außen erreichbar ist?
Nein, solange Du ihn irgendwie unter dem gewünschten ServerNamen erreichst, egal, ob da zwischendrin noch NAT, Portforwarding oder sonstwas gemacht wird.
Best regards from Dresden/Germany Viele Grüße aus Dresden Heiko Schlittermann
Am 07.02.2013, 12:40 Uhr, schrieb Heiko Schlittermann hs@schlittermann.de:
Mahlzeit,
snip
Im Netz gab's noch diverse Hinweise zu /etc/hosts - muß da was rein?
Nein. Blöde Frage: Neu geladen (apache2ctl graceful) hast Du die Konfiguration schon mal?
ja, und zumeist die harte Tour mit /etc/init.d/... reload|restart
Wie sieht im Browser die URL aus, mit der Du das versuchst? Paßt die 1:1 zum ServerName? Denn der Browser bestimmt ja letztlich den Host-Header im HTTP-Protokoll, und genau nach diesem Header richtet sich dann der Apache.
ja, URL ist identisch zum Servernamen - das macht's ja so spannend, wo der Erkenntniskomplex zu finden sein wird ;-)
Grüße,
Bernhard
Bernhard Bittner Bernhard.Bittner@gmx.net (Do 07 Feb 2013 13:07:57 CET):
Am 07.02.2013, 12:40 Uhr, schrieb Heiko Schlittermann ja, URL ist identisch zum Servernamen - das macht's ja so spannend, wo der Erkenntniskomplex zu finden sein wird ;-)
apache2ctl configtest
ist unauffällig? Kannst Du die Konfiguration mailen?
Am 07.02.2013, 12:40 Uhr, schrieb Heiko Schlittermann hs@schlittermann.de:
Heho,
ein Problem gelöst und ein neues bekommen ;-)
zugreife, übrigens intern auf ner 10.x.y.z-IP. Aber spielt das ne Rolle, solange er von außen erreichbar ist?
Nein, solange Du ihn irgendwie unter dem gewünschten ServerNamen erreichst, egal, ob da zwischendrin noch NAT, Portforwarding oder sonstwas gemacht wird.
es spielt doch eine Rolle - die interne IP des Servers muß in diesem Fall in der NameVirtualHost-Direktive stehen, bisher hatte ich da '*' drin. Siehe
http://httpd.apache.org/docs/2.0/en/mod/core.html#namevirtualhost
Jetzt ist die Domain auf dem richtigen Ordner, dafür ist der Zugriff auf die restlichen Ordner hinüber. Dranbleiben ;-)
Grüße,
Bernhard
Bernhard Bittner Bernhard.Bittner@gmx.net (Do 07 Feb 2013 13:42:18 CET):
Am 07.02.2013, 12:40 Uhr, schrieb Heiko Schlittermann hs@schlittermann.de:
Heho,
ein Problem gelöst und ein neues bekommen ;-)
zugreife, übrigens intern auf ner 10.x.y.z-IP. Aber spielt das ne Rolle, solange er von außen erreichbar ist?
Nein, solange Du ihn irgendwie unter dem gewünschten ServerNamen erreichst, egal, ob da zwischendrin noch NAT, Portforwarding oder sonstwas gemacht wird.
es spielt doch eine Rolle - die interne IP des Servers muß in diesem Fall in der NameVirtualHost-Direktive stehen, bisher hatte ich da '*' drin. Siehe
Nein, muß nicht. Das was bei NameVirtualHost steht, muß auch bei <VirtualHost …> auftauchen.
http://httpd.apache.org/docs/2.0/en/mod/core.html#namevirtualhost
Wo liest Du dort, daß die eine IP angeben mußt. Dort kann auch ein * stehen. Oder *:80
Am 07.02.2013, 13:47 Uhr, schrieb Heiko Schlittermann hs@schlittermann.de:
Hallo Heiko,
snip
zugreife, übrigens intern auf ner 10.x.y.z-IP. Aber spielt das ne Rolle, solange er von außen erreichbar ist?
Nein, solange Du ihn irgendwie unter dem gewünschten ServerNamen erreichst, egal, ob da zwischendrin noch NAT, Portforwarding oder sonstwas gemacht wird.
es spielt doch eine Rolle - die interne IP des Servers muß in diesem Fall in der NameVirtualHost-Direktive stehen, bisher hatte ich da '*' drin. Siehe
Nein, muß nicht. Das was bei NameVirtualHost steht, muß auch bei <VirtualHost …> auftauchen.
http://httpd.apache.org/docs/2.0/en/mod/core.html#namevirtualhost
Wo liest Du dort, daß die eine IP angeben mußt. Dort kann auch ein * stehen. Oder *:80
Zitat:
In cases where a firewall or other proxy receives the requests and forwards them on a different IP address to the server, you must specify the IP address of the physical interface on the machine which will be servicing the requests.
Das hab ich dahingehend interpretiert, mit '*' passierte nichts. Obendrein hab ich die interne IP doch in /etc/hosts eingetragen, da Apache zwischenrein ein Auflösungsproblem vermeldete.
Grüße,
Bernhard
Hallo Bernhard,
Bernhard Bittner Bernhard.Bittner@gmx.net (Do 07 Feb 2013 13:53:53 CET):
Am 07.02.2013, 13:47 Uhr, schrieb Heiko Schlittermann hs@schlittermann.de:
Hallo Heiko,
es spielt doch eine Rolle - die interne IP des Servers muß in diesem Fall in der NameVirtualHost-Direktive stehen, bisher hatte ich da '*' drin. Siehe
Nein, muß nicht. Das was bei NameVirtualHost steht, muß auch bei <VirtualHost …> auftauchen.
http://httpd.apache.org/docs/2.0/en/mod/core.html#namevirtualhost
Wo liest Du dort, daß die eine IP angeben mußt. Dort kann auch ein * stehen. Oder *:80
Zitat:
In cases where a firewall or other proxy receives the requests and forwards them on a different IP address to the server, you must specify the IP address of the physical interface on the machine which will be servicing the requests.
Ja, wenn Du wirklich eine Adresse eintragen möchtest, und nicht nur einen „*“, dann ist das korrekt.
Das hab ich dahingehend interpretiert, mit '*' passierte nichts. Obendrein hab ich die interne IP doch in /etc/hosts eingetragen, da Apache zwischenrein ein Auflösungsproblem vermeldete.
Ich denke, der macht irgendwo bei Start ein gethostbyaddr auf die Adresse und mecket etwas, wenn er nichts zurückbekommt, starten tut er aber trotzdem.
Am 07.02.2013, 11:05 Uhr, schrieb Heiko Schlittermann hs@schlittermann.de:
Aaalso,
es bleibt bei der IP in der Direktive wie in meiner vorherigen Mail geschrieben und die muß dann latürnich in allen VirtualHost-Vorkommen drin stehen, auch in default.
Doch kein neues Problem, ich war zu voreilig ;-)
Danke & Grüße allerseits,
Bernhard
Bernhard Bittner Bernhard.Bittner@gmx.net (Do 07 Feb 2013 13:47:25 CET):
Am 07.02.2013, 11:05 Uhr, schrieb Heiko Schlittermann hs@schlittermann.de:
Aaalso,
es bleibt bei der IP in der Direktive wie in meiner vorherigen Mail geschrieben und die muß dann latürnich in allen VirtualHost-Vorkommen drin stehen, auch in default.
Doch kein neues Problem, ich war zu voreilig ;-)
# port.conf NameVirtualHost *:80
# sites-enabled/000-default <VirtualHost *:80> … </VirtualHost>
# sites-enabled/server.domain.tld <VirtualHost *:80> ServerName server.domain.tld ServerAlias domain.tld … </VirtualHost>
Sollte wirklich gehen.
Am 07.02.2013, 13:51 Uhr, schrieb Heiko Schlittermann hs@schlittermann.de:
Bernhard Bittner Bernhard.Bittner@gmx.net (Do 07 Feb 2013 13:47:25 CET):
Am 07.02.2013, 11:05 Uhr, schrieb Heiko Schlittermann hs@schlittermann.de:
Aaalso,
es bleibt bei der IP in der Direktive wie in meiner vorherigen Mail geschrieben und die muß dann latürnich in allen VirtualHost-Vorkommen drin stehen, auch in default.
Doch kein neues Problem, ich war zu voreilig ;-)
# port.conf NameVirtualHost *:80
# sites-enabled/000-default <VirtualHost *:80> … </VirtualHost>
# sites-enabled/server.domain.tld <VirtualHost *:80> ServerName server.domain.tld ServerAlias domain.tld … </VirtualHost>
Sollte wirklich gehen.
kopfkratz - jetzt geht's nach Gegenprobe mit IP auch nicht mehr. Da frag ich mich doch wieder...
Grüße,
Bernhard
Bernhard Bittner Bernhard.Bittner@gmx.net (Do 07 Feb 2013 14:43:12 CET):
Am 07.02.2013, 13:51 Uhr, schrieb Heiko Schlittermann hs@schlittermann.de:
Bernhard Bittner Bernhard.Bittner@gmx.net (Do 07 Feb 2013
Am 07.02.2013, 11:05 Uhr, schrieb Heiko Schlittermann geschrieben und die muß dann latürnich in allen VirtualHost-Vorkommen drin stehen, auch in default.
Doch kein neues Problem, ich war zu voreilig ;-)
# port.conf NameVirtualHost *:80
# sites-enabled/000-default <VirtualHost *:80> …
</VirtualHost>
# sites-enabled/server.domain.tld <VirtualHost *:80> ServerName server.domain.tld ServerAlias domain.tld …
</VirtualHost>
Sollte wirklich gehen.
kopfkratz - jetzt geht's nach Gegenprobe mit IP auch nicht mehr. Da frag ich mich doch wieder...
Mit IP solltest Du den ersten (default)-Host sehen.
Best regards from Dresden/Germany Viele Grüße aus Dresden Heiko Schlittermann
Am 07.02.2013, 13:51 Uhr, schrieb Heiko Schlittermann hs@schlittermann.de:
tja,
Bernhard Bittner Bernhard.Bittner@gmx.net (Do 07 Feb 2013 13:47:25 CET):
Am 07.02.2013, 11:05 Uhr, schrieb Heiko Schlittermann hs@schlittermann.de:
Aaalso,
es bleibt bei der IP in der Direktive wie in meiner vorherigen Mail geschrieben und die muß dann latürnich in allen VirtualHost-Vorkommen drin stehen, auch in default.
Doch kein neues Problem, ich war zu voreilig ;-)
das nehm ich wieder zurück und behaupte das Gegenteil.
# port.conf NameVirtualHost *:80
# sites-enabled/000-default <VirtualHost *:80> … </VirtualHost>
# sites-enabled/server.domain.tld <VirtualHost *:80> ServerName server.domain.tld ServerAlias domain.tld … </VirtualHost>
Sollte wirklich gehen.
tut es auch. Dann ist die Baustelle wohl vhost-Konfig
Grüße,
Bernhard
Moin Bernhard,
On Thu, Feb 07, 2013 at 10:23:31AM +0100, Bernhard Bittner wrote:
Die extra vHost-Konfig (/etc/apache2/sites-enabled/server.domain.tld) wird aber offenbar nicht berücksichtigt.
Geht diese Mischung (vHost + Directory) überhaupt? Oder sitzt da schon der Denkfehler?
Wo und wie sag ich's dem Apachen?
Ich würde das Problem wohl vereinfach lösen: zwei vHosts. Einer der sich server.domain.tld nennt, und einer der server.local oder so ist.. Und bei dem .local dann die IP als ServerAlias festlegen. Was ähnliches hab ich bei mir auch im Einsatz, nur das ich generell alles als /var/www/$ServerName nehme.
Gruß, Andre
lug-dd@mailman.schlittermann.de