Title: Umgebungsvariablen
Der Apache-Server speichert Informationen in sogenannten Umgebungsvariablen. Mit diesen Informationen können verschiedene Operationen wie die Protokollierung oder Zugriffskontrolle gesteuert werden. Die Variablen dienen auch der Kommunikation mit externen Programmen wie zum Beispiel CGI-Skripten. Im folgenden werden die unterschiedlichen Möglichkeiten zur Manipulation und Verwendung dieser Variablen beschrieben.
Diese Variablen werden zwar als Umgebungsvariablen beschrieben, sie sind aber nicht das Gleiche wie die Umgebungsvariablen des Betriebssystems, denn sie werden in einer internen Apache-Struktur gespeichert und manipuliert. Zu Umgebungsvariablen des Betriebssystems werden sie nur bei Übergabe an CGI- und Server Side Include-Skripte. Soll die Umgebung des Betriebssystems, unter dem der Server selbst ausgeführt wird, manipuliert werden, dann müssen Sie den standardmäßigen Manipulationsmechanismus der Shell des Betriebssystems benutzen.
Am einfachsten wird eine Umgebungsvariable mit der
Ein flexibleres Setzen der Umgebungsvariablen ist mit den Direktiven des
Moduls mod_setenvif mit Bedingungen möglich, die auf Eigenschaften
der einzelnen Anfragen basieren. Eine Variable kann beispielsweise nur dann
gesetzt werden, wenn die Anfrage von einem bestimmten Browsertyp kommt
oder wenn ein bestimmter Referer-Header vorhanden ist.
Noch mehr Möglichkeiten bietet die Direktive mod_rewrite, bei der die
Umgebungsvariablen mit der [E=...]-Option gesetzt werden.
Das Modul mod_unique_id schließlich setzt die
Umgebungsvariable UNIQUE_ID für jede Anfrage unter sehr
speziellen Bedingungen auf einen garantiert für allen Anfragen eindeutigen Wert.
Neben den in der Apache-Konfiguration gesetzten und den von der Shell übergebenen Umgebungsvariablen verfügen die CGI-Skripte und SSI-Seiten über eine Reihe von Umgebungsvariablen mit Meta-Informationen zur Anfrage, wie dies von der CGI-Spezifikation gefordert wird.
- Die CGI-Standardvariablen können mit den Manipulationsbefehlen für die Umgebung überschrieben oder geändert werden.
- Werden CGI-Skripte mit suexec gestartet, wird
die Umgebung bis auf einige sichere Variablen bereinigt, bevor
CGI-Skripte gestartet werden. Die Liste der sicheren Variablen wird
beim Kompilieren in der Datei
suexec.cdefiniert. - Aus Portatbilitätsgründen dürfen die Namen der Umgebungsvariablen nur Buchstaben, Zahlen und Unterstriche enthalten. Ferner darf das erste Zeichen keine Zahl sein. Zeichen die nicht dieser Konvention entsprechen, werden bei der Übergabe an CGI-Skripte und SSI-Seiten durch Unterstriche ersetzt.
Umgebungsvariablen werden in erster Linie für die Kommunikation mit CGI-Skripten verwendet. Wie bereits erwähnt wurde, gehören zu der den CGI-Skripten übergebenen Umgebung neben den Variablen, die in der Apache-Konfiguration gesetzt wurden, Meta-Informationen über die Anfrage. Einzelheiten hierzu finden Sie unter CGI: Dynamische Inhalte.
Von den INCLUDES-Filtern des Moduls
mod_include verarbeitete SSI-Dokumente können
Umgebungsvariablen mit dem echo-Element ausgeben und
die Umgebungsvariablen Elemente für die Flusskontrolle benutzen, um
Teile einer Seite in Abhängigkeit von der Anfrage zu gestalten. Der Apache versorgt
SSI-Seiten wie oben beschrieben ebenfalls mit den standardmäßigen
CGI-Umgebungsvariablen. Weitere Einzelheiten hierzu finden Sie unter
Server Side Includes (SSI).
Der Zugriff auf den Server kann mit den Direktiven
allow from env= und deny from env=
über den Wert der Umgebungsvariablen gesteuert werden. In Verbindung mit der
Direktive
Umgebungsvariablen können mit der %e-Option der
gif nicht protokolliert werden, oder es können nur Anfragen
von Clients außerhalb des eigenen Subnet aufgezeichnet werden.
Die
Externe Filter, die mit der disableenv= und enableenv= in
Abhängigkeit von einer Umgebungsvariablen aktiviert werden.
Mit der Variante %{ENV:...} des Teststring der
Direktive mod_rewrite können Entscheidungen in Abhängigkeit von
Umgebungsvariablen getroffen werden. Dabei ist zu beachten, dass die Variablen,
auf die mod_rewrite ohne das Präfix ENV:
zugreifen kann, keine Umgebungsvariablen, sondern Variablen speziell für
mod_rewrite sind, auf die von anderen Modulen nicht zugegriffen
werden kann.
Probleme bei der Zusammenarbeit haben zur Einführung spezieller
Mechanismen geführt, die das Verhalten des Apache bei der Kommunikation
mit bestimmten Clients beeinflussen. Um diese Mechanismen so flexibel wie
möglich zu gestalten, werden hierfür normalerweise mit
Die Anfrage wird in jedem Fall als HTTP/1.0-Anfrage behandelt.
Vorhandene Vary-Felder werden aus dem Antwort-Header
entfernt, bevor er an den Client gesendet wird. Einige Clients interpretieren dieses
Feld nicht korrekt, so dass bestimmte Probleme durch Setzen dieser Variablen
vermieden werden können. In Verbindung mit dieser Variablen muss auch
force-response-1.0 gesetzt werden.
Diese Variable verlangt eine HTTP/1.0-Antwort an Clients, die eine HTTP/1.0-Anfrage stellen. Ursprünglich wurde diese Variable als Reaktion auf ein Problem mit den AOL-Proxies eingerichtet. Einige HTTP/1.0-Clients haben nicht korrekt geantwortet, wenn eine HTTP/1.1-Antwort einging. Mit dieser Option kann der Fehler behoben werden.
Erhält diese Variable den Wert 1, wird der Ausgabefilter
DEFLATE des Moduls text/html deaktiviert. Bei Verwendung
statisch komprimierter Dateien wertet
Wird diese Variable gesetzt, wird der DEFLATE-Filter des
Moduls
Deaktiviert die Option
Diese Variable beeinflusst das Verhalten von en, ja oder x-klingon), versucht
Diese Variable verlangt vom Server mehr Vorsicht beim Versenden einer Umleitung an den Client. Sie wird benutzt, wenn bekannt ist, dass ein Client Schwierigkeiten mit Umleitungen hat. Implementiert wurde diese Variable ursprünglich in Reaktion auf ein Problem mit der WebFolders-Software von Microsoft, die Schwierigkeiten bei Umleitungen von Verzeichnisressourcen mit DAV-Methoden hatte.
Verfügbar ab Version 2.0.40
Führt der Apache als Reaktion auf eine Client-Anfrage eine Umleitung durch, dann enthält die Antwort einen anzuzeigenden aktuellen Hinweis, falls der Client der Umleitung nicht automatisch folgen kann oder dies nicht tut. Entsprechend dem verwendeten Zeichensatz, gibt der Apache gewöhnlich ISO-8859-1 an.
Erfolgt die Umleitung jedoch zu einer Seite, die einen anderen Zeichensatz verwendet, werden nicht korrekte Browser-Versionen den Zeichensatz der Umleitung anstatt den der aktuellen Seite zu benutzen. Auf diese Weise wird eine Sprache wie Griechisch möglicherweise nicht korrekt dargestellt.
Wird diese Umgebungsvariable gesetzt, lässt der Apache den Zeichensatz für den Umleitungshinweis fort, so dass diese Browser dann den korrekten Zeichensatz für die Seite benutzen.
Fügen Sie die folgenden Zeilen in die Datei httpd.conf ein,
um bekannte Client-Probleme zu beheben.
# # Die folgenden Direktiven verändern das normale HTTP-Antwortverhalten. # Die erste deaktiviert Keepalives für Netscape 2.x und Browser, die ihn nachbilden. # Die Browser-Implementierungen haben bekannte Probleme. Die zweite # ist für den Microsoft Internet Explorer 4.0b2 gedacht, dessen # HTTP/1.1-Implementierung fehlerhaft ist und Keepalives bei 301- und # 302-Antworten nicht korrekt (Umleitungen). # BrowserMatch "Mozilla/2" nokeepalive BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
# # Die nächste Direktive deaktiviert HTTP/1.1-Antworten an Browser, die sich # nicht an die HTTP/1.0-Spezifikation halten und nicht in der Lage sind, # eine einfache HTTP/1.1-Antwort zu verstehen. # BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0
Dieses Beispiel verhindert die Aufzeichnung von Anfragen nach Bildern im Zugriffsprotokoll. Es lässt sich einfach verändern, um die Protokollierung bestimmter Verzeichnisse oder von Anfragen bestimmter Hosts zu verhindern.
SetEnvIf Request_URI \.gif image-request SetEnvIf Request_URI \.jpg image-request SetEnvIf Request_URI \.png image-request CustomLog logs/access_log common env=!image-request
Dieses Beispiel zeigt, wie Sie verhindern können, dass Fremde ihre Seiten mit
Bildern von Ihrem Server schmücken. Diese Konfiguration ist nicht unbedingt zu
empfehlen, ist aber in beschränktem Umfang funktionsfähig. Es wird davon
ausgegangen, dass sich alle Bilder im Verzeichnis /web/images
befinden.
SetEnvIf Referer "^http://www.example.com/" local_referal # Browser ohne Referer-Feld zulassen SetEnvIf Referer "^$" local_referal <Directory /web/images> Order Deny,Allow Deny from all Allow from env=local_referal </Directory>
Weitere Informationen hierzu finden Sie unter " Keeping Your Images from Adorning Other Sites".
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
