Serververarbeitung anpassen

In diesem Kapitel wird beschrieben, wie Sie mit SSI-Anweisungen (Server-Side Includes) Informationen in CGI-Programme und HTML-Dokumente einfügen, die an einen Client übermittelt werden. Außerdem werden die Anpassung der Fehlernachrichten des Servers sowie die Zuordnung von Ressourcen beschrieben.

Server-Side Includes

Mit Server-Side Includes können Sie CGI-Programmen und HTML-Dokumenten Informationen hinzufügen, die der Server an den Client sendet, wenn er als Ursprungsserver auftritt (weitergeleitete und zwischengespeicherte Objekte sind nicht betroffen). Das aktuelle Datum, die Dateigröße und das Datum der letzten Änderung einer Datei sind Beispiele für die Art von Informationen, die an den Client gesendet werden können. Dieser Abschnitt beschreibt das Befehlsformat für Server-Side Includes und erläutert die Schritte, die erforderlich sind, damit Server-Side-Include-Befehle in CGI-Programmen und HTML-Dokumenten funktionieren. Sie können Server-Side Includes auch zum Anpassen von Fehlerseiten verwenden.

Hinweise zu Server-Side Includes

Bevor Sie Server-Side Includes auf Ihrem Server verwenden, sollten Sie folgende Aspekte bezüglich Leistung, Sicherheit und Risiken bedenken:

Server-Side Includes konfigurieren

Wählen Sie in den Konfigurations- und Verwaltungsformularen Serverkonfiguration –> Basiseinstellungen aus, um die Unterstützung für Server-Side Includes zu aktivieren. In diesem Formular können Sie angeben, welche der folgenden Arten von Server-Side Includes akzeptiert werden:

Außerdem können Sie in diesem Formular festlegen, ob die Verarbeitung von Server-Side Includes zusätzlich zu anderen Dateitypen auch für Text- und HTML-Dokumente vorgenommen werden soll.

Stellen Sie außerdem sicher, dass die Dateierweiterung, die Sie für Server-Side Includes verwenden, erkannt wird. Wählen Sie in den Konfigurations- und Verwaltungsformularen Serverkonfiguration –> MIME-Typen und -Codierung aus und rufen Sie das Formular MIME-Typen auf. Standardmäßig werden die Erweiterungen shtml und htmls erkannt.

Die folgenden Referenzabschnitte beschreiben, wie Sie durch Ändern der Anweisungen in der Konfigurationsdatei Ihren Proxy-Server für die Unterstützung von Server-Side Includes konfigurieren:

Format für Server-Side Includes

Include-Befehle müssen in Form von Kommentaren in das HTML-Dokument oder CGI-Programm eingefügt werden. Die Befehle müssen das folgende Format haben:

<!--#Anweisung Tag=Wert ... --> 
oder 
<!--#Anweisung Tag="Wert" ... -->  

Die Werte müssen nur dann in Anführungszeichen gesetzt werden, wenn sie Leerzeichen enthalten.

Anweisungen für Server-Side Includes

In diesem Abschnitt werden die Anweisungen beschrieben, die der Server für Server-Side Includes akzeptiert. (Verwechseln Sie diese Anweisungen nicht mit den Anweisungen für die Konfigurationsdatei des Proxy-Servers, die in Anhang B. Anweisungen in der Konfigurationsdatei beschrieben werden.)

config - Dateiverarbeitung steuern

Mit dieser Anweisung können Sie bestimmte Aspekte der Dateiverarbeitung steuern. Die gültigen Tags sind cmntmsg, errmsg, sizefmt und timefmt.

cmntmsg
Mit diesem Tag können Sie eine Nachricht angeben, die den Kommentaren vorangestellt werden soll, die von anderen Anweisungen hinzugefügt werden. Wenn eine Anweisung Text zwischen der Anweisungsspezifikation und "-->" enthält, wird dieser Text als Kommentar behandelt und der Datei hinzugefügt, die der Server an den Client sendet.

Beispiel:

<!--#config cmntmsg="[Dies ist ein Kommentar]" -->
<!-- #echo var="  " zusätzlicher Text -->

Ergebnis: <!--[Dies ist ein Kommentar] zusätzlicher Text -->

Standard: [Folgendes war zusätzlich in der Anweisung]

errmsg
Mit diesem Tag können Sie die Nachricht angeben, die an den Client gesendet werden soll, wenn beim Verarbeiten einer Datei ein Fehler auftritt. Die Nachricht wird im Fehlerprotokoll des Servers aufgezeichnet.

Beispiel:

<!-- #config errmsg="[Es ist ein Fehler aufgetreten]" -->

Standard: "[Fehler beim Verarbeiten dieser Anweisung]"

sizefmt
Mit diesem Tag können Sie das Format angeben, in dem die Dateigröße angezeigt wird. In den folgenden Beispielen ist bytes der Wert, der zum Anzeigen der Anzahl Bytes verwendet wird, und abbrev der Wert, der zum Anzeigen der Anzahl Kilobytes bzw. Megabytes verwendet wird.

Beispiel 1:

<!--#config sizefmt=bytes -->
<!--#fsize file=foo.html -->

Ergebnis: 1024

Beispiel 2:

<!--#config sizefmt=abbrev -->
<!--#fsize file=foo.html -->

Ergebnis: 1 KB

Standard: "abbrev"

timefmt
Mit diesem Tag können Sie das Format festlegen, in dem Datums- und Zeitangaben angezeigt werden.

Beispiel:

<!--#config timefmt="%D %T" -->
<!--#flastmod file=foo.html -->

Ergebnis: "18/10/95 12:05:33"

Standard: "%a, %d %b %Y %T %Z"

Die folgenden Formate für strftime() können für das Tag timefmt verwendet werden:

Kennung Bedeutung
%% Durch % ersetzen
%a Durch den abgekürzten Namen des Wochentags ersetzen
%A Durch den vollständigen Namen des Wochentags ersetzen
%b Durch den abgekürzten Namen des Monats ersetzen
%B Durch den vollständigen Namen des Monats ersetzen
%c Durch Datum und Uhrzeit ersetzen
%C Durch die Jahreszahl ersetzen (Jahr dividiert durch 100 und abgeschnitten)
%d Durch den Tag des Monats ersetzen (01-31)
%D Datum im Format %m/%t/%j einfügen
%e Monat als Dezimalzahl einfügen (01-12) (unter C POSIX ist dies ein zweistelliges, rechtsbündiges Feld mit Leerzeichen)
%E[cCxyY] Wenn das alternative Datum/Uhrzeit-Format nicht verfügbar ist, werden die %E-Deskriptoren ihren nicht erweiterten Entsprechungen zugeordnet (%EC wird z. B. %C zugeordnet).
%Ec Durch die alternative Darstellung von Datum und Uhrzeit ersetzen
%EC Durch den Namen des Basisjahrs (Zeitraum) in der alternativen Darstellung ersetzen
%Ex Durch die alternative Darstellung des Datums ersetzen
%EX Durch die alternative Darstellung der Uhrzeit ersetzen
%Ey Durch die Jahreszahl ohne Jahrhundert (%EC) in der alternativen Darstellung ersetzen
%EY Durch die vollständige alternative Jahresdarstellung ersetzen
%h Durch den abgekürzten Namen des Monats ersetzen (wie %b)
%H Durch die Stunde (23-Stunden-Format) in Dezimalformat (00-23) ersetzen
%I Durch die Stunde (12-Stunden-Format) in Dezimalformat (00-12) ersetzen
%j Durch den Tag des Jahres (001-366) ersetzen
%m Durch den Monat (01-12) ersetzen
%M Durch die Minute (00-59) ersetzen
%n Durch eine neue Zeile ersetzen
%O[deHlmMSUwWy] Wenn das alternative Datum/Uhrzeit-Format nicht verfügbar ist, werden die %E-Deskriptoren ihren nicht erweiterten Entsprechungen zugeordnet (%Od wird z. B. %d zugeordnet).
%Od Durch den Tag des Monats unter Verwendung der alternativen numerischen Symbole, nach Bedarf aufgefüllt mit führenden Nullen ersetzen, falls es ein alternatives Symbol für Null gibt, andernfalls mit führenden Leerzeichen
%Oe Durch den Tag des Monats unter Verwendung der alternativen numerischen Symbole, nach Bedarf aufgefüllt mit führenden Leerzeichen ersetzen
%OH Durch die Stunde (24-Stunden-Format) unter Verwendung der alternativen numerischen Symbole ersetzen
%OI Durch die Stunde (12-Stunden-Format) unter Verwendung der alternativen numerischen Symbole ersetzen
%Om Durch den Monat unter Verwendung der alternativen numerischen Symbole ersetzen
%OM Durch die Minuten unter Verwendung der alternativen numerischen Symbole ersetzen
%OS Durch die Sekunden unter Verwendung der alternativen numerischen Symbole ersetzen
%OU Durch die Kalenderwoche (Sonntag als erster Tag der Woche, Regeln wie bei %U) unter Verwendung der alternativen numerischen Symbole ersetzen
%Ow Durch den Wochentag (Sonntag=0) unter Verwendung der alternativen numerischen Symbole ersetzen
%OW Durch die Kalenderwoche (Montag als erster Tag der Woche) unter Verwendung der alternativen numerischen Symbole ersetzen
%Oy Durch das Jahr (ohne Jahrhundert (%C)) in der alternativen Darstellung und unter Verwendung der alternativen numerischen Symbole ersetzen
%p Durch die lokale Entsprechung für AM und PM ersetzen
%r Durch die Zeichenfolgeentsprechung für %I:%M:%S %p ersetzen
%R Durch die Uhrzeit im 24-Stunden-Format (%H:%M) ersetzen
%S Durch die Sekunden (00-61) ersetzen
%t Durch einen Tabulator ersetzen
%T Durch die Zeichenfolgeentsprechung für %H:%M:%S ersetzen
%u Durch den Wochentag im Dezimalformat (1-7) ersetzen, wobei die 1 für Montag steht
%U Durch die Kalenderwoche (00-53) ersetzen, wobei Sonntag der erste Tag der Woche ist
%V Durch die Kalenderwoche (01-53) ersetzen, wobei Montag der erste Tag der Woche ist
%w Durch den Wochentag (0-6) ersetzen, wobei die 0 für Sonntag steht
%W Durch die Kalenderwoche (00-53) ersetzen, wobei Montag der erste Tag der Woche ist
%x Durch die entsprechende Datumsdarstellung ersetzen
%X Durch die entsprechende Uhrzeitdarstellung ersetzen
%y Durch die zweistellige Jahresangabe (ohne Jahrhundert) ersetzen
%Y Durch die vollständige vierstellige Jahresangabe ersetzen
%Z Durch den Namen der Zeitzone bzw. eine leere Zeichenfolge ersetzen, falls die Zeitzone unbekannt ist

Die Konfiguration des Betriebssystems legt die vollständigen und abgekürzten Angaben für Monate und Jahre fest.

echo - Variablenwerte anzeigen

Mit dieser Anweisung können Sie den Wert von Umgebungsvariablen anzeigen, die mit dem Tag var angegeben werden. Wenn eine Variable nicht gefunden wurde, wird (None) angezeigt. Außerdem können Sie mit echo einen Wert anzeigen, der mit der Anweisung set oder global festgelegt wurde. Folgende Umgebungsvariablen können angezeigt werden:

DATE_GMT
Das aktuelle Datum und die Uhrzeit in westeuropäischer Zeit (GMT). Das Format dieser Variablen wird mit der Anweisung config timefmt festgelegt.
DATE_LOCAL
Das aktuelle Datum und die Ortszeit. Das Format dieser Variablen wird mit der Anweisung config timefmt festgelegt.
DOCUMENT_NAME
Der Name des Ausgangsdokuments. Falls das HTML-Dokument von einem CGI-Programm generiert wurde, enthält diese Variable den Namen des CGI-Programms.
DOCUMENT_URI
Der vollständige, vom Client angeforderte URL ohne die Abfragezeichenfolge.
LAST_MODIFIED
Das Datum und die Uhrzeit der letzten Änderung des aktuellen Dokuments. Das Format dieser Variablen wird mit der Anweisung config timefmt festgelegt.
QUERY_STRING_UNESCAPED
Die vom Client gesendete Suchabfrage (nicht definiert, sofern ein HTML-Dokument nicht von einem CGI-Programm generiert wurde).
SSI_DIR
Der Pfad der aktuellen Datei, relativ zu SSI_ROOT. Wenn die aktuelle Datei in SSI_ROOT gespeichert ist, lautet dieser Wert "/".
SSI_FILE
Der Dateiname der aktuellen Datei.
SSI_INCLUDE
Der Wert in dem include-Befehl, mit dem die aktuelle Datei abgerufen wurde. Diese Variable ist für die Ausgangsdatei nicht definiert.
SSI_PARENT
Der Pfad und Dateiname der Datei, die den include-Befehl enthält, mit dem die aktuelle Datei abgerufen wurde, relativ zu SSI_ROOT.
SSI_ROOT
Der Pfad der Ausgangsdatei. Alle include-Anforderungen müssen sich in diesem Verzeichnis oder in einem seiner Unterverzeichnisse befinden.

Beispiel:

<!--#echo var=SSI_DIR -->

exec - CGI-Programme angeben

Mit dieser Anweisung können Sie die Ausgabe eines CGI-Programms einfügen. Die Anweisung exec verwirft alle HTTP-Header, die vom CGI-Programm ausgegeben werden, mit Ausnahme der folgenden:

Content-type
Legt fest, ob der Hauptteil der Ausgabe für andere Includes syntaktisch analysiert werden soll.
Content-encoding
Legt fest, ob die Umsetzung von EBCDIC in ASCII durchgeführt werden muss.
Last-modified
Ersetzt den aktuellen Wert des Header "last-modified", sofern der aktuelle Wert nicht größer ist als der angegebene Wert.

cgi - URL-Adresse des CGI-Programms angeben

Mit dieser Anweisung können Sie den URL eines CGI-Programms angeben.

In diesem Beispiel ist program das CGI-Programm, das ausgeführt werden soll. path_info und query_string stehen für einen oder mehrere Parameter, die als Umgebungsvariablen an das Programm übergeben werden.

<!--#exec cgi="/cgi-bin/program/path_info?query_string" -->

Dieses Beispiel zeigt die Verwendung der Variablen:

<!--#exec cgi="&path;&cgiprog;&pathinfo;&querystring;" -->

flastmod - Datum und Uhrzeit der letzten Dokumentänderung anzeigen

Mit dieser Anweisung können Sie Datum und Uhrzeit der letzten Dokumentänderung anzeigen. Das Format dieser Variablen wird mit der Anweisung config timefmt festgelegt. Die gültigen Tags für diese Anweisung sind file und virtual, die im Folgenden beschrieben werden.

Anweisungsformate:

<!--#flastmod file="/Pfad/Datei" --> 
<!--#flastmod virtual="/Pfad/Datei" -->
file
Mit diesem Tag können Sie den Namen einer Datei angeben. Bei flastmod, fsize und include wird file relativ zu SSI_ROOT interpretiert, wenn ein Schrägstrich ('/') vorangestellt ist. Andernfalls wird das Tag relativ zu SSI_DIR interpretiert. Die angegebene Datei muss im Verzeichnis SSI_ROOT oder in einem seiner untergeordneten Verzeichnisse gespeichert sein. Beispiel:
<!--#flastmod file="/Pfad/Datei" -->
virtual
Mit diesem Tag können Sie die URL-Adresse des virtuellen Pfads zu einem Dokument angeben. Bei flastmod, fsize und include wird virtual immer durch Zuordnungsanweisungen des Servers übergeben. Beispiel:
<!--#flastmod virtual="/Pfad/Datei" -->

Beispiel:

<!--#flastmod file="foo.html" -->

Ergebnis: 12May96

fsize - Dateigröße anzeigen

Mit dieser Anweisung können Sie die Größe der angegebenen Datei anzeigen. Das Format dieser Variablen wird mit der Anweisung config sizefmt festgelegt. Die gültigen Tags für diese Anweisung sind file und virtual, die im Abschnitt zur Anweisung flastmod beschrieben sind.

Beispiel:

<!--#fsize file="/Pfad/Datei" -->
<!--#fsize virtual="/Pfad/Datei" -->

Ergebnis: 1K

global - Globale Variablen definieren

Mit dieser Anweisung können Sie globale Variablen definieren, die zu einem späteren Zeitpunkt von dieser Datei oder anderen eingefügten Dateien zurückgemeldet werden können.

Beispiel:

<!--#global var=Variablenname value="einWert" -->

Wenn Sie beispielsweise auf ein übergeordnetes Dokument außerhalb der virtuellen Grenzen verweisen möchten, müssen Sie die globale Variable DOCUMENT_URI definieren. Außerdem müssen Sie im untergeordneten Dokument auf die globale Variable verweisen. Dieses Beispiel zeigt die HTML-Codierung, die Sie in das übergeordnete Dokument einfügen müssen:

<!--#global var="PARENT_URI" value=&DOCUMENT_URI; -->

Dieses Beispiel zeigt die HTML-Codierung, die Sie in das untergeordnete Dokument einfügen müssen:

<!--#flastmod virtual=&PARENT_URI; -->

include - Ein Dokument in die Ausgabe einfügen

Mit dieser Anweisung können Sie den Text eines Dokuments in die Ausgabe einfügen. Die gültigen Tags für diese Anweisung sind file und virtual, die im Abschnitt zur Anweisung flastmod beschrieben werden.

set - Zurückzumeldende Variablen festlegen

Mit dieser Anweisung können Sie eine Variable definieren, die zu einem späteren Zeitpunkt von dieser Datei (ausschließlich) zurückgemeldet werden kann.

Beispiel:

 <!--#set var="Variable 2" value="AndererWert" -->

Wenn Sie eine Anweisung definieren, können Sie innerhalb von value eine Zeichenfolge zurückgeben. Beispiel:

<!--#include file="&Dateiname;" -->

Variablen: Einer auf Serverseite definierten Anweisung set folgt im Allgemeinen eine Anweisung echo, d. h. die definierte Variable wird gesucht und, sofern möglich, zurückgemeldet. Anschließend wird die Ausführung der Funktion fortgesetzt. Die Anweisung kann mehrere Verweise auf Variablen enthalten. Außerdem können Sie mit set-Anweisungen auf Serverseite eine bereits definierte Variable zurückmelden. Falls keine definierte Variable gefunden wird, wird nichts angezeigt.

Wenn eine auf Serverseite definierte Anweisung set in einer SSI-Anweisung einen Variablenverweis findet, versucht sie, diesen Verweis auf Serverseite aufzulösen. In der zweiten Zeile des folgenden Beispiels bildet die Servervariable &index; zusammen mit der Zeichenfolge var den Variablennamen var1. Anschließend wird der Variablen &var1; ein Wert zugeordnet, indem dem Et-Zeichen (&) im Ausdruck &ecirc; ein Escape-Zeichen vorangestellt wird, damit dieser Ausdruck nicht als Variable interpretiert wird. Er wird vielmehr als Zeichenfolge verwendet, um den Wert fr&ecirc;d bzw. fred mit einem Zirkumflex über dem e zu bilden. Die Variable &ecirc; ist eine clientseitige Variable.

<!--#set var="index" value="1" --> 
<!--#set var="var&index;" value="fr\&ecirc;d" --> 
<!--#echo var="var1" -->

Die folgenden Zeichen können durch Voranstellen eines Backslash (\) geschützt werden:

Zeichen Bedeutung
\a Alert (Signalton)
\b Rückschritt
\f Formularvorschub (Seitenvorschub)
\n Neue Zeile
\r Zeilenschaltung
\t Horizontaltabulator
\v Vertikaltabulator
\' Einfaches Anführungszeichen
\" Doppeltes Anführungszeichen
\? Fragezeichen
\\ Umgekehrter Schrägstrich
\- Silbentrennungsstrich
\. Punkt
\& Et-Zeichen

Fehlernachrichten anpassen

Sie können die von Caching Proxy zurückgegebenen Fehlernachrichten anpassen und für bestimmte Fehlerbedingungen spezielle Nachrichten definieren. Wählen Sie in den Konfigurations- und Verwaltungsformularen Serverkonfiguration –> Anpassung von Fehlernachrichten aus. In diesem Formular können Sie eine Fehlerbedingung auswählen und eine bestimmte HTML-Datei angeben, die für diese Bedingung verwendet werden soll.

Informationen zum Anpassen von Fehlernachrichten durch Editieren der Anweisungen in der Konfigurationsdatei des Proxy-Servers finden Sie im Abschnitt zur Anweisung ErrorPage - Für eine bestimmte Fehlerbedingung eine angepasste Nachricht angeben.

RTSP-Umleitung (Real Time Streaming Protocol)

Dies gilt nur für Reverse-Proxy-Konfigurationen.

Mit RTSP Redirector, einem neuen Feature von WebSphere Application Server Version 8.0, wird jetzt das Streaming von Multimediadateien unterstützt. Mit RTSP ist Caching Proxy in der Lage, Kontakt zu Media-Playern herzustellen und deren Anforderungen an einen geeigneten Proxy-Server oder Content-Server weiterzuleiten, der die angeforderten Multimediainhalte bereitstellt.

RTSP (Real Time Streaming Protocol) ist in RFC 2326 definiert und ein Internet-Standardprotokoll für die Steuerung von Datenströmen. Obwohl RTSP keine Technologie zum Senden von Datenströmen beinhaltet, ist es so flexibel, dass es zur Steuerung von Datenströmen eingesetzt werden kann, die sich nicht auf die Video- oder Audiowiedergabe beschränken.

Informationen zur RTSP-Umleitung

Mit der Umleitungsfunktion von RTSP kann Caching Proxy Anforderungen für jede von RTSP gesteuerte Multimediasitzung umleiten, die Streaming unterstützt. Dies betrifft folgende Multimediatypen:

Jede Wiedergabeeinheit (Player), deren Konfiguration die Kontaktaufnahme zu einem Proxy-Server am RTSP-Port (in der Regel 554) unterstützt, kann dieses Framework in Caching Proxy verwenden, um ihre Anforderungen von RTSP Redirector bearbeiten zu lassen.

Multimediapräsentationen werden von RTSP Redirector weder zwischengespeichert noch direkt umgeleitet. Für die Unterstützung dieser beiden Funktionen muss RTSP Redirector zusammen mit einem Multimediaserver eines Fremdanbieters eingesetzt werden, der Streaming unterstützt. Wenn RTSP Redirector in Caching Proxy verwendet wird, muss der Zugriff auf einen oder mehrere RTSP-Proxy-Server über das Netz möglich sein.

Einschränkung von RTSP

Für diese Funktion gilt folgende Einschränkung:

Derzeit werden nur RealNetworks-Technologien unterstützt. Dazu gehören der RealProxy-Proxy-Server, der RealServer-Ursprungsserver sowie der RealPlayer.

Verbesserungen von RTSP

In früheren Versionen unterlag RTSP Redirector der Einschränkung, dass alle Anforderungen an denselben Ursprungsserver für alle URLs auf dieselbe Weise umgeleitet wurden. Eine Umleitung basierend auf Dateinamen oder anderen Teilen des angeforderten URL war nicht möglich. Diese Einschränkung gilt nicht mehr. RTSP Redirector verwendet jetzt den vollständigen URL aus den empfangenen Anforderungen zusammen mit dem Schwellenwert (rtsp_proxy_threshold), der in der Konfigurationsdatei von Caching Proxy festgelegt ist, um zu bestimmen, ob die Clientanforderungen an den Ursprungsserver oder an einen Proxy-Server umgeleitet werden. Anforderungen an denselben Ursprungsserver werden individuell behandelt.

RTSP-Umleitung konfigurieren

Mit den folgenden Anweisungen in der Konfigurationsdatei können Sie die RTSP-Umleitung steuern. Die Einstellungen für diese Anweisungen werden bei einem Neustart des Servers nicht aktualisiert. Sie müssen den Server vollständig stoppen und anschließend erneut starten, damit die an diesen Anweisungen vorgenommenen Änderungen wirksam werden.