You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@httpd.apache.org by Michelle Konzack <li...@freenet.de> on 2007/11/17 14:26:35 UTC

Apache nur auf bestimmten FQDN's lauschen lassen

Hallo,

Nach einer neuinstallation eines Netzwerks (alles Debian GNU/Linux 4.0)
mit mehreren Apache2 Servern versuchen plzoetlich ALLE auf einen Request
zu antworten.

Ich habe die Apache's folgend configuriert:

1)  vserver1.irgendwas.tld
      vhost1.irgendwas.tld
      vhost2.irgendwas.tld
      vhost3.irgendwas.tld

2)  vserver2.subdom1.irgendwas.tld
      vhost4.subdom1.irgendwas.tld
      vhost5.subdom1.irgendwas.tld
      vhost6.subdom1.irgendwas.tld

3)  vserver3.subdom2.irgendwas.tld
      vhost7.subdom2.irgendwas.tld
      vhost8.subdom2.irgendwas.tld
      vhost9.subdom2.irgendwas.tld

DNS funktioniert und ist fuer die Domain <irgendwas.tld> und ihre
subdomains (eigen Zonen) entsprechend konfiguriert.

Nun, wenn ich <http://vhost8.subdom2.irgendwas.tld/> aufrufe, passiert
es ploetzlich, das <vserver2.subdom1.irgendwas.tld> oder
<vserver1.irgendwas.tld> antworten und mir melden, das die gewuenschte
Domain nicht verfuegbar ist.

Also unter Apache 1.3 waren die Server still und haben sich nicht
unaufgefordert gemeldet.

Jetzt habe ich mehrfach die Apache2 Dokumentation durchgelesen, aber
nichts gefunden.

Kann mir jemand sagen, wie die Option lautet, um das unaufgeforderte
Antworten zu unterbinden?

Anm:  Die <vserver1.irgendwas.tld>, <vserver2.subdom1.irgendwas.tld>
      sowie <vserver3.subdom2.irgendwas.tld> sind nur zur
      administration der "VHosts" da.

Thanks, Greetings and nice Day
    Michelle Konzack


-- 
Linux-User #280138 with the Linux Counter, http://counter.li.org/
##################### Debian GNU/Linux Consultant #####################
Michelle Konzack   Apt. 917                  ICQ #328449886
                   50, rue de Soultz         MSN LinuxMichi
0033/6/61925193    67100 Strasbourg/France   IRC #Debian (irc.icq.com)

Re: Apache nur auf bestimmten FQDN's lauschen lassen

Posted by Daniela Lautenschlaeger <da...@gmx.net>.
>> Beim Umstieg auf Apache 2.x sollte man sich dazu
>> durchringen, überall explizite IP-Angaben einzutragen:
>>
>> # Port 80 /falls vorhanden, weg damit

> Wie meinste das?

Ich versuch's mal ein bisschen ausführlicher. Sorry ggf. für den
erhöhten Verbalanteil :-) Ich schreib' das auch für andere Leute,
die evtl. noch gar nicht wissen, wo es lang geht.

Man sollte sich zu einer konsistenten Zuordnung zwischen
gewünschten Hostnamen und zur Verfügung stehenden IP-Nrn.
durchringen. 1. zu klärende Frage: wie viele IP-Nrn. sind ver-
fügbar (im Normalfall zwei: 127.0.0.1 + die "echte"), wieviele
VirtualHosts sollen laufen. Sind mehr VirtualHosts (auf DER-
SELBEN Port-Nr.) gewünscht, als IP-Nrn. vorhanden, muss man
zusätzlich name-based-VirtualHosting aktivieren (dazu später
mehr, ausserdem muss man natürlich erst mal für eine DNS-
Auflösung der gewünschten Hostnamen sorgen). Das Gegenteil
(der Normalfall) heisst IP-basiertes VirtualHosting.

Mit Apache 1.3 hatte man entweder 'BindAddress'/'Port' oder
die 'Listen'-Direktive zur Verfügung, um festzulegen, auf welchem
Interface gelauscht wird. Ersteres war in den letzten 1.3er-Ver-
sionen schon 'deprecated', mit 2.0 gibt es nur noch 'Listen'.

'Listen' ist sozusagen die Basis-Direktive. Jede 'Listen'-Direktive
erzeugt quasi eine Instanz eines http-Daemons, der auf einer
bestimmten Port-Nr. Requests annimmt, die bei der IP-Nr. des
Hosts ankommen.

Deshalb nimmt 'Listen' eine obligatorische Port-Nr. und eine optio-
nale IP-Nr. Kann man damit leben, dass der oder die VirtualHosts
(sowie der Default-Server) an allen möglicherweisen vorhandenen
Interfaces (incl. 127.0.0.1) lauscht, lässt man die IP-Nr. bei Listen
weg, der Daemon lauscht damit an der symbolischen Adresse
"0.0.0.0" und hinter 'VirtualHost' schreibt man dafür entweder
"_default_" (bei IP-basiertem Hosting) oder "*" (bei name-based-
VirtualHosting) anstelle einer konkreten IP-Nr (das ist leider ein
bisschen inkonsequent, aber "historisch gewachsen").

Muss man irgendwie festlegen, dass der Daemon sich an ein bestimm-
tes Netzwerk-Interface bindet, geschieht das über das Angeben einer
IP-Nr. bei 'Listen'; wie auch bei 'VirtualHost' gilt hier: falls diese in 
Form
eines DNS-auflösbaren Hostnamens in der .conf steht, so löst Apache
diesen beim Programmstart auf - wichtig ist hier nur die IP-Nr.

Im Falle von gewünschtem name-based-VirtualHosting (eine IP-Nr.,
mehrere Hostnamen) kann Apache deswegen (mit einer als Hostnamen
spezifizierten IP-Nr. hinter 'Listen' und 'VirtualHost') aber noch keine Zu-
ordnung von Requests zum gewünschten VirtualHost vornehmen. Dazu
muss die Daemon-Instanz zusätzlich den "Host:"-Header auswerten (im
Gegensatz ist bei IP-basiertem Hosting dem Daemon erst mal völlig egal,
was _in_ den Requests steht).

Das aktiviert man dann durch 'NameVirtualHost', dessen Parameter mit
dem genau derjenigen 'Listen'-Anweisung übereinstimmen sollte, deren
"Daemon-Instanz" gemeint ist. Innerhalb des an eine bestimmte Listen-
Direktive "drangehängten" VirtualHost-Containers muss dann die ent-
sprechende 'ServerName'-Direktive (und ggf. zusätzliche 'ServerAlias'-
Direktiven) stehen.
Es gibt auch eine Verfahrensweise, falls 'ServerName' fehlt - siehe dazu
'UseCanonicalName'/'UseCanonicalPort' - aber dieser Fall ist eher aka-
demisch.

An dieser Stelle sollte jetzt klar sein, an welchen Punkten auf Konsistenz
zu achten ist:

Listen -> [optional:]NameVirtualHost -> VirtualHost -> ServerName

Und (hilfreich für den Überblick, sofern auch noch andere als der Std.-
Port 80 im Spiel sind) auch hinter 'ServerName' kann man einen Port
spezifizieren. Es schadet also nicht, ggf. "MyHost.domain.tld:80" zu
schreiben. 'ServerAlias' nimmt allerdings keine Portangabe an (ist
wiederum leicht inkonsequent, aber eben so).


>> # falls jemand http://w.x.y.z/ im Browser eintippt,
>> # kann nur ein VHost auf diese URL antworten:
>>     ServerAlias w.x.y.z

> Das will ich auf ALLEN Servern blocken.  Die Frage ist, wie macht
> man das?  (Das habe ich auch nicht unter 1.3 hinbekommen)

Wenn die IP als Hostname verwendet wird, würde ja ggf. der Default-
Server "rangehen". Ich würde also einen name-based-VirtualHost dafür
einrichten und dafür sorgen, dass es z. B einen 404-Fehler gibt:

Listen w.x.y.z:80
NameBasedVirtualHost w.x.y.z:80
<VirtualHost w.x.y.z:80>
    DirectoryIndex does.not.exist
</VirtualHost>

MfG

Olaf Lautenschläger
-- 
X-BND-WakeUp[tm]: Semtex APOthekenpflichtig Abschiebung Kanther Kurdistan

----- Original Message ----- 
From: "Michelle Konzack" <li...@freenet.de>
To: <us...@httpd.apache.org>
Sent: Friday, November 23, 2007 3:15 AM
Subject: Re: Apache nur auf bestimmten FQDN's lauschen lassen 


--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: Apache nur auf bestimmten FQDN's lauschen lassen

Posted by Michelle Konzack <li...@freenet.de>.
Am 2007-11-19 15:53:39, schrieb Olaf Lautenschlaeger:
> 'NameVirtualHost' und 'Listen' wirklich konsistent?

Hmm, da habe ich überhaupt nur 'NameVirtualHost' in der config.
'Listen' fehlt.

> Beim Umstieg auf Apache 2.x sollte man sich dazu
> durchringen, überall explizite IP-Angaben einzutragen:
> 
> # Port 80 /falls vorhanden, weg damit

Wie meinste das?

> NameVirtualHost w.x.y.z:80
> Listen w.x.y.z:80

lezteres habe ich hinzugefügt

> <VirtualHost w.x.y.z:80>

Das habe ich schon seit 1.3

>     ServerName host1.domain.tld:80

Also Port ranhängen?  Gut werde ich machen.

>     ServerAlias host1

Sind auch gesetzt wie unter 1.3

> # falls jemand http://w.x.y.z/ im Browser eintippt,
> # kann nur ein VHost auf diese URL antworten:
>     ServerAlias w.x.y.z

Das will ich auf ALLEN Servern blocken.  Die Frage ist, wie macht
man das?  (Das habe ich auch nicht unter 1.3 hinbekommen)

> <VirtualHost w.x.y.z:80>
>     ServerName host2.domain.tld:80
>     ServerAlias host2
>     ...
> d.h. überall (ausser ServerAlias) die Portnr. mit dahinterschreiben
> 
> Man vergegenwärtige sich einfach, dass bei NameVirtualHosting
> ein reiner Stringvergleich im HTTP/1.1-Request-Header stattfindet.
> Verwendet man "VirtualHost host1.domain.tld", gilt die DNS-Auf-
> lösung zum Zeitpunkt des Einlesens der httpd.conf (gefragt ist hier
> nämlich eine IP-Nr, nicht der Hostname). Entscheidend ist 'Server-
> Name' (wird ggf. auch beim Apache-Start aus DNS-Infos gebas-
> telt, wenn nicht explizit angegeben).


Dann werde ich mal meine Datenbank anpassen...

Thanks, Greetings and nice Day
    Michelle Konzack


-- 
Linux-User #280138 with the Linux Counter, http://counter.li.org/
##################### Debian GNU/Linux Consultant #####################
Michelle Konzack   Apt. 917                  ICQ #328449886
                   50, rue de Soultz         MSN LinuxMichi
0033/6/61925193    67100 Strasbourg/France   IRC #Debian (irc.icq.com)

Re: Apache nur auf bestimmten FQDN's lauschen lassen

Posted by Olaf Lautenschlaeger <ap...@anova.de>.
'NameVirtualHost' und 'Listen' wirklich konsistent?

Beim Umstieg auf Apache 2.x sollte man sich dazu
durchringen, überall explizite IP-Angaben einzutragen:

# Port 80 /falls vorhanden, weg damit

NameVirtualHost w.x.y.z:80
Listen w.x.y.z:80
<VirtualHost w.x.y.z:80>
    ServerName host1.domain.tld:80
    ServerAlias host1
# falls jemand http://w.x.y.z/ im Browser eintippt,
# kann nur ein VHost auf diese URL antworten:
    ServerAlias w.x.y.z
    ...
<VirtualHost w.x.y.z:80>
    ServerName host2.domain.tld:80
    ServerAlias host2
    ...
d.h. überall (ausser ServerAlias) die Portnr. mit dahinterschreiben

Man vergegenwärtige sich einfach, dass bei NameVirtualHosting
ein reiner Stringvergleich im HTTP/1.1-Request-Header stattfindet.
Verwendet man "VirtualHost host1.domain.tld", gilt die DNS-Auf-
lösung zum Zeitpunkt des Einlesens der httpd.conf (gefragt ist hier
nämlich eine IP-Nr, nicht der Hostname). Entscheidend ist 'Server-
Name' (wird ggf. auch beim Apache-Start aus DNS-Infos gebas-
telt, wenn nicht explizit angegeben).
HTH

Olaf Lautenschläger
-- 
ANOVA Multimedia Studios GmbH

fon: (+49) (0) 381 / 40 59 - 550
fax: (+49) (0) 381 / 40 59 - 551
web: www.anova.de
corporate e-mail: info@anova.de
_______________________________________

ANOVA Multimedia Studios GmbH

Geschaeftsfuehrer:
Prof. Dr. Hansgeorg Meissner,
Michael Kaeding,
Dr. Volker Gries

Firmensitz:
Joachim-Jungius-Strasse 10,
D-18059 Rostock / Germany

Registergericht:
Amtsgericht Rostock

Handelsregisternummer:
HRB 2788

UST-IdNummer:
DE 811577650

(footer size due to legal demands applying under german law)

----- Original Message ----- 
From: "Michelle Konzack" <li...@freenet.de>
To: "apache de" <us...@httpd.apache.org>
Sent: Saturday, November 17, 2007 2:26 PM
Subject: Apache nur auf bestimmten FQDN's lauschen lassen



--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: Apache nur auf bestimmten FQDN's lauschen lassen

Posted by Bjoern Hoehrmann <de...@gmx.net>.
* Michelle Konzack wrote:
>Nun, wenn ich <http://vhost8.subdom2.irgendwas.tld/> aufrufe, passiert
>es ploetzlich, das <vserver2.subdom1.irgendwas.tld> oder
><vserver1.irgendwas.tld> antworten und mir melden, das die gewuenschte
>Domain nicht verfuegbar ist.

Zur Erinnerung, wenn du die Addresse oben aufrufst, fragt dein Browser
den DNS-Server nach der IP-Adresse von vhost8.subdom2.irgendwas.tld und
baut dann eine TCP-Verbindung mit der IP-Adresse auf Port 80 auf. Was
du beschreibst ist dann nur möglich, wenn alle drei Installationen auf
derselben IP-Adresse und demselben Port laufen. Sicher dass das nicht
ein DNS- oder Routing-Problem ist?
-- 
Björn Höhrmann · mailto:bjoern@hoehrmann.de · http://bjoern.hoehrmann.de
Weinh. Str. 22 · Telefon: +49(0)621/4309674 · http://www.bjoernsworld.de
68309 Mannheim · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/ 

--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------