Zum Inhalt springen

Apache/14 CGI/2 Konfiguration/3 Anweisungen: Unterschied zwischen den Versionen

Aus Foxwiki
K Dirkwagner verschob die Seite Apache2.4/14 CGI/2 Konfiguration/3 Konfigurationsanweisungen nach Apache2.4/14 CGI/2 Konfiguration/3 Anweisungen, ohne dabei eine Weiterleitung anzulegen
K Textersetzung - „–“ durch „-“
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:


=== Konfigurationsanweisungen für mod_cgi und mod_cgid ===
=== 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
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
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
nicht notwendig; sie konfigurieren vor allem das Logging der CGI-Skripte. In diesem kurzen Abschnitt werden alle Direktiven von mod_cgi und mod_cgid
Zeile 24: Zeile 24:
CGI-Skriptfehler angelegt. Während im ErrorLog nur eine lapidare einzeilige Fehlermeldung erscheint, wenn ein CGI-Skript einen Fehler enthält, finden Sie hier
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
eine ausführliche Analyse. Das ScriptLog sollten Sie nur zu Debugging-Zwecken
während der Entwicklung von CGI-Skripten aktivieren im laufenden Betrieb
während der Entwicklung von CGI-Skripten aktivieren - im laufenden Betrieb
kostet seine Verwendung zu viel Performance.
kostet seine Verwendung zu viel Performance.


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


Zeile 89: Zeile 89:


ScriptSock /var/run/apache2/cgid.sock
ScriptSock /var/run/apache2/cgid.sock
[[Kategorie:Apache/CGI]]

Aktuelle Version vom 11. Mai 2025, 20:46 Uhr

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