httpd-users-de mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniela Lautenschlaeger" <daniela.lautenschlae...@gmx.net>
Subject Re: Apache nur auf bestimmten FQDN's lauschen lassen
Date Wed, 28 Nov 2007 21:40:29 GMT
>> 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" <linux4michelle@freenet.de>
To: <users-de@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
--------------------------------------------------------------------------


Mime
View raw message