Zum Inhalt springen

Apache/14 CGI/2 Konfiguration/3 Anweisungen

Aus Foxwiki

Konfigurationsanweisungen für mod_cgi und mod_cgid

Wie Sie in Abschnitt 14.2.2, CGI in normalen Verzeichnissen aktivieren, erfahren haben, können Sie die Funktionalität von mod_cgi beziehungsweise mod_cgid einsetzen, ohne eine einzige Konfigurationsdirektive dieser Module selbst zu setzen. Für die eigentliche Ausführung von CGI-Skripten sind diese Direktiven auch nicht notwendig; sie konfigurieren vor allem das Logging der CGI-Skripte. In diesem kurzen Abschnitt werden alle Direktiven von mod_cgi und mod_cgid beschrieben.

ScriptLog Pfad der Log-Datei für CGI-Skripte

Modul mod_cgi, mod_cgid Kontext Server, <VirtualHost> Syntax ScriptLog Pfad Standardwert nicht gesetzt

Falls der Pfad relativ angegeben wird, bezieht er sich auf die ServerRoot. Das folgende Beispiel legt eine ScriptLog-Datei mit konventionellem UNIX-Namen im normalen logs-Verzeichnis an:

ScriptLog logs/script_log

Unter Windows würde die Datei dagegen standardmäßig script.log heißen.

Wenn Sie die Direktive ScriptLog setzen, wird eine zusätzliche Log-Datei für CGI-Skriptfehler angelegt. Während im ErrorLog nur eine lapidare einzeilige Fehlermeldung erscheint, wenn ein CGI-Skript einen Fehler enthält, finden Sie hier eine ausführliche Analyse. Das ScriptLog sollten Sie nur zu Debugging-Zwecken während der Entwicklung von CGI-Skripten aktivieren - im laufenden Betrieb kostet seine Verwendung zu viel Performance.

Ein wenig aufpassen müssen Sie mit den Zugriffsrechten für die ScriptLog-Datei: Die Einträge werden von der User-ID vorgenommen, unter der das Skript ausgeführt wird. Der betreffende User benötigt also Schreibrechte an der Log-Datei. Falls sie sich in einem separaten Verzeichnis befindet, können Sie dem CGIBenutzer einfach Schreibrechte für dieses Verzeichnis erteilen. Befindet sie sich dagegen im allgemeinen logs-Verzeichnis, ist dies ein zu großes Sicherheitsrisiko. In diesem Fall sollten Sie die Datei manuell erzeugen und dem CGI-Benutzer nur das Schreiben dieser einen Datei erlauben.

ScriptLogBuffer Maximale Byte-Anzahl des HTTP-Anfrage-Bodys im ScriptLog

Modul mod_cgi, mod_cgid Kontext Server, <VirtualHost>

Syntax ScriptLogBuffer Bytes Standardwert 1024

Bei einem CGI-Skriptfehler, der auf eine HTTP-Anfrage vom Typ POST oder PUT folgt, werden nicht nur die HTTP-Header in das ScriptLog geschrieben, sondern auch der Beginn des Entity-Bodys. Damit dies nicht zu Speicherengpässen führt oder gar für DoS-Attacken missbraucht wird, wird die maximale Anzahl von Bytes des HTTP-Anfrage-Bodys, die in die Log-Datei aufgenommen werden, mit dieser Direktive beschränkt. Beispiel:

ScriptLogBuffer 2048

ScriptLogSize Maximale Größe der ScriptLog-Datei

Modul mod_cgi, mod_cgid Kontext Server, <VirtualHost> Syntax ScriptLogSize Bytes Standardwert 10385760

Ähnlich wie die Größe des einzelnen Eintrags (siehe ScriptLogBuffer) kann auch die Gesamtgröße der ScriptLog-Datei beschränkt werden. Diese Maßnahme schützt ebenfalls vor Festplattenüberlauf sowie vor Angriffen. Beispiel:

ScriptLogSize 20971520 # 20 MByte

ScriptSock Pfadname des UNIX-Domain-Sockets für mod_cgid

Modul mod_cgid Kontext Server, <VirtualHost> Syntax ScriptSock Pfad Standardwert logs/cgisock

Beim Start des Webservers erzeugt mod_cgid automatisch einen zusätzlichen Prozess, in dem die einzelnen CGI-Skripte als Threads ausgeführt werden. Apache kommuniziert mit diesem Prozess über ein UNIX-Domain-Socket. Dies ist eine Pipe-ähnliche, bidirektionale Einrichtung im Dateisystem, die der InterprozessKommunikation dient. In jeder anderen Hinsicht funktioniert sie genau wie ein Netzwerk-Socket.

Apache für CGI-Skripte konfigurieren 14.2

Diese Direktive legt den Pfadnamen des verwendeten UNIX-Domain-Sockets fest. Die Ressource wird mit den Rechten des Benutzers geöffnet, der Apache gestartet hat - in der Regel also root. Achten Sie darauf, dass kein anderer Benutzer Schreibrechte in diesem Verzeichnis besitzt.

Hier ein Beispiel für die Verwendung der Direktive:

ScriptSock /var/run/apache2/cgid.sock