Mit der Anweisung FastCgiAccessChecker können Sie eine FastCGI-Anwendung definieren, die als Zugriffsprüfprogramm für einzelne Verzeichnisse eingesetzt wird. Vor der Benutzerauthentifizierung findet die Apache-Zugriffsphase (Apache Access) statt. Damit basiert die Entscheidung, ob der Zugriff auf die angeforderte Ressource gewährt oder abgelehnt wird, auf dem HTTP-Header, der mit der Anforderung übergeben wird. FastCGI-gestützte Berechtigungsprüfprogramme sind in erster Linie dann von Nutzen, wenn in die Entscheidung darüber, ob ein Zugriff gültig ist, eine dynamische Komponente einbezogen wird, wie z. B. eine Uhrzeit oder die Tatsache, ob das Konto einer Domäne auf dem aktuellsten Stand ist.
Wenn es zu dem Dateinamen der FastCGI-Anwendung keine entsprechende statische oder externe Server-Definition gibt, wird die Anwendung als dynamische FastCGI-Anwendung gestartet. Beginnt der Dateiname nicht mit einem Schrägstrich (/), wird er relativ zur Server-Root interpretiert.
Die Anweisung FastCgiAccessChecker wird in den Behältern "Verzeichnis" (Directory
) oder "Position" (Position
)
verwendet.
<Directory htdocs/protected>
FastCgiAccessChecker fcgi-bin/access-checker
</Directory>
mod_fastcgi sendet fast alle Standardumgebungsvariablen, die CGI/FastCGI-Anforderungsverarbeitungsprogrammen normalerweise zur Verfügung stehen. Alle von einer FastCGI-Zugriffsprüfanwendung in einer Erfolgsantwort (Status: 200) zurückgegebenen Header werden als Umgebungsvariablen an Unterprozesse (CGI/FastCGI-Aufrufe) übergeben. Die in einer Misserfolgsantwort zurückgegebenen Header werden an den Client übergeben. Mit der Option "-compat" kann eine Verarbeitung gemäß FastCGI-Spezifikation erreicht werden.
mod_fastcgi setzt die Umgebungsvariable "FCGI_APACHE_ROLE" auf "ACCESS_CHECKER" und gibt damit an, welche (Apache-spezifische) Phase des Berechtigungsprüfprogramms durchgeführt wird.
Benutzerdefinierte Fehlerantworten für FastCGI-Anwendungen für die Berechtigungsprüfung werden nicht unterstützt. Weitere Informationen zum Umgehen dieses Problems finden Sie in der Beschreibung der Anweisung ErrorDocument (das Dokument kann von einer FastCGI-Anwendung bereitgestellt werden).
Wenn Sie die Anweisung FastCgiAccessCheckerAuthoritative explizit auf "Off" setzen, kann die Zugriffsprüfung an Module einer niedrigeren Ebene (die in der Konfigurationsdatei und der Datei "modules.c" definiert sind) übergeben werden, falls die FastCGI-Anwendung den Zugriff nicht gewährt.
Standardmäßig wird die Steuerung nicht übergeben. Ein gescheiterter
Zugriff resultiert in der Antwort "Forbidden" (Zugriff verweigert).
Sie sollten sich genau überlegen, ob Sie die Standardeinstellung
inaktivieren.
Mit der Anweisung FastCgiAuthenticator können Sie eine FastCGI-Anwendung definieren, die als Authentifizierungsprogramm für einzelne Verzeichnisse eingesetzt wird. Authentifizierungsprogramme prüfen, ob der anfordernde Benutzer auch der ist, der er zu sein vorgibt. Bei dieser Überprüfung werden der angegebene Benutzername und das angegebene Kennwort mit einer Liste oder Datenbank bekannter Benutzer und Kennwörter abgeglichen. FastCGI-gestützte Authentifizierungsprogramme sind in erster Linie dann von Nutzen, wenn die Benutzerdatenbank in einem vorhandenen, unabhängigen Programm gepflegt wird oder sich auf einer anderen Maschine als dem Web-Server befindet.
Wenn es zu dem Dateinamen der FastCGI-Anwendung keine entsprechende statische oder externe Server-Definition gibt, wird die Anwendung als dynamische FastCGI-Anwendung gestartet. Beginnt der Dateiname nicht mit einem Schrägstrich (/), wird er relativ zur Server-Root interpretiert.
Die Anweisung FastCgiAuthenticator wird in den Behältern Directory oder Location verwendet und muss eine Anweisung "AuthType" und "AuthName" enthalten. Es wird lediglich der Benutzerauthentifizierungstyp "Basic" unterstützt. Damit die Anweisung ordnungsgemäß ausgeführt wird, muss sie zusammen mit einer Anweisung "require" oder "FastCgiAuthorizer" angegeben werden.
<Directory htdocs/protected>
AuthType Basic
AuthName ProtectedRealm
FastCgiAuthenticator fcgi-bin/authenticator
require valid-user
</Directory>
mod_fastcgi
sendet fast alle Standardumgebungsvariablen, die
CGI/FastCGI-Anforderungsverarbeitungsprogrammen normalerweise
zur Verfügung stehen. Alle von einer FastCGI-Authentifizierungsanwendung
in einer Erfolgsantwort (Status: 200) zurückgegebenen Header werden
als Umgebungsvariablen an Unterprozesse (CGI/FastCGI-Aufrufe) übergeben. Die
in einer Misserfolgsantwort zurückgegebenen Header werden an den Client
übergeben. Mit der Option "-compat
" kann eine
Verarbeitung gemäß FastCGI-Spezifikation erreicht werden.
Mod_fastcgi
setzt die Umgebungsvariable "FCGI_APACHE_ROLE"
auf "AUTHENTICATOR" und gibt damit an, welche (Apache-spezifische) Phase
des Berechtigungsprüfprogramms durchgeführt wird.
Benutzerdefinierte Fehlerantworten für FastCGI-Anwendungen für die Berechtigungsprüfung werden nicht unterstützt. Weitere Informationen zum Umgehen dieses Problems finden Sie in der Beschreibung der "ErrorDocument" (das Dokument kann von einer FastCGI-Anwendung bereitgestellt werden).
Wenn Sie die Anweisung FastCgiAuthenticatorAuthoritative
explizit auf
Off setzen, kann die Authentifizierung an Module einer niedrigeren Ebene
(die in der Konfigurationsdatei
und der Datei modules.c
definiert sind) übergeben werden, falls die FastCGI-Anwendung den Benutzer nicht
authentifizieren kann.
Häufig wird diese Anweisung zusammen einer geschützten Benutzerauthentifizierungsdatei
(AuthUserFile
)
verwendet, die einige (verwaltungsbezogene) Benutzer enthält.
Standardmäßig wird die Steuerung nicht übergeben. Kann ein Benutzer nicht identifiziert werden, wird die Antwort "Berechtigung erforderlich" ausgegeben. Sie sollten sich gut überlegen, ob Sie die Standardeinstellung inaktivieren.
Die Anweisung FastCgiAuthorizer
wird verwendet, um eine FastCGI-Anwendung als
Berechtigungsprüfprogramm auf Verzeichnisbasis zu definieren. Berechtigungsprüfprogramme stellen fest,
ob einem authentifizierten Benutzer erlaubt wird, auf eine angefragte Ressource zuzugreifen. FastCGI-basierte
Berechtigungsprüfprogramme sind hauptsächlich sinnvoll, wenn eine dynamische Komponente zur
Entscheidung der Authentifizierung beiträgt, wie die Tageszeit, oder ob der Benutzer seine Rechnungen bezahlt hat oder nicht.
Wenn es zu dem Dateinamen der FastCGI-Anwendung keine entsprechende statische oder externe Server-Definition gibt, wird die Anwendung als dynamische FastCGI-Anwendung gestartet. Beginnt der Dateiname nicht mit einem Schrägstrich (/), wird er relativ zur Server-Root interpretiert.
Die Anweisung FastCgiAuthorizer
wird in den Behältern
Directory
oder Location
verwendet und muss eine Anweisung "AuthType" und "AuthName" enthalten. Damit die Anweisung ordnungsgemäß
ausgeführt wird, muss sie zusammen mit einer Authentifizierungs-Anweisung "FastCGIAuthenticator", "AuthUserFile", "AuthDBUserFile" oder
"AuthDBMUserFile" angegeben werden.
<Directory htdocs/protected>
AuthType Basic
AuthName ProtectedRealm
AuthDBMUserFile conf/authentication-database
FastCgiAuthorizer fcgi-bin/authorizer
</Directory>
mod_fastcgi
sendet fast alle Standardumgebungsvariablen, die
CGI/FastCGI-Anforderungsverarbeitungsprogrammen normalerweise zur Verfügung
stehen. Alle von einer FastCGI-Authentifizierungsanwendung in einer
Erfolgsantwort (Status: 200) zurückgegebenen Header werden als Umgebungsvariablen
an Unterprozesse (CGI/FastCGI-Aufrufe) übergeben. In einer Misserfolgsantwort
zurückgegebene Header werden an den Client zurückgegeben. Mit der Option
"-compat
" kann eine Verarbeitung gemäß FastCGI-Spezifikation
erreicht werden.
Mod_fastcgi
setzt die Umgebungsvariable "FCGI_APACHE_ROLE"
auf "AUTHORIZER" und gibt damit an, welche (Apache-spezifische) Phase
des Berechtigungsprüfprogramms durchgeführt wird.
Benutzerdefinierte Fehlerantworten von FastCGI-Berechtigungsprüfprogrammen werden nicht unterstützt. Weitere Informationen zum Umgehen dieses Problems finden Sie in der Beschreibung der Anweisung ErrorDocument (das Dokument kann von einer FastCGI-Anwendung bereitgestellt werden).
Wenn Sie die Anweisung FastCgiAuthenticatorAuthoritative
explizit auf
Off setzen, kann die Authentifizierung an Module einer niedrigeren Ebene
(die in der Konfigurationsdatei
und der Datei modules.c
definiert sind) übergeben werden, falls die FastCGI-Anwendung den Benutzer nicht
authentifizieren kann.
Häufig wird diese Anweisung zusammen einer geschützten Benutzerauthentifizierungsdatei
(AuthUserFile
)
verwendet, die einige (verwaltungsbezogene) Benutzer enthält.
Standardmäßig wird die Steuerung nicht übergeben. Kann ein Benutzer nicht identifiziert werden, wird die Antwort "Berechtigung erforderlich" ausgegeben. Sie sollten sich gut überlegen, ob Sie die Standardeinstellung inaktivieren.
Mit der Anweisung FastCgiConfig
werden die Standardparameter
für alle dynamische FastCGI-Anwendungen definiert. Diese Anweisung
hat keinerlei Auswirkung auf statische oder externe Anwendungen.
Dynamische Anwendungen werden nicht bei der Server-Initialisierung gestartet, sondern bei Bedarf. Wenn der Bedarf hoch ist, werden weitere Anwendungsinstanzen gestartet. Bei sinkendem Bedarf werden die Anwendungsinstanzen gelöscht. Dieser Prozess wird von vielen Optionen gesteuert.
Die folgenden Optionen sind verfügbar (Groß-/Kleinschreibung beachten):
appConnTimeout n (0 Sekunden)
connect()
).
Wenn das Zeitlimit abläuft, tritt ein Server-Fehler ( SERVER_ERROR) auf.
Werte ungleich Null geben den Zeitraum an, der bei der select()
-Operation
für das Schreiben in den Dateideskriptor verwendet wird, der von einer nicht endlos wartenden
Verbindungsanforderung (connect()) zurückgegeben wird.
Nicht endlos wartende Verbindungsanforderungen (connect()
) verursachen auf
zahlreichen Plattformen Probleme. Lesen Sie in diesem Zusammenhang auch die Erklärungen
zum Attribut "-idle-timeout", das ähnliche Ergebnisse, allerdings in einer verständlicheren
Weise, liefert.idle-timeout n (30 Sekunden)
error
LogLevel
).
Der Inaktivitätszeitgeber ist nur so lange wirksam, wie eine Verbindung mit der
FastCGI-Anwendung ansteht. Wenn eine eine Anforderung in die Warteschlange einer
Anwendung gestellt wird, die Anwendung in diesem Zeitraum jedoch nicht reagiert
(durch Schreiben und Zurückschreiben in den Puffer), wird die Anwendung beendet. Sollte
die Übertragung mit der Anwendung abgeschlossen sein, mit dem Client jedoch nicht
(in diesem Fall wird die Antwort in den Puffer gestellt), gilt das Zeitlimit nicht.autoUpdate none
-restart
angegeben wird.gainValue n (0.5)
gainValue
) multipliziert. Bei der Angabe
eines kleinen Gain-Wertes wird somit den alten Werten im Vergleich zum aktuellen Wert, der
mit gainValue
multipliziert wird, mehr Gewicht beigemessen.initial-env name[=Wert]
none
init-start-delay n (1
Sekunde)
killInterval n (300 Sekunden)
listen-queue-depth n (100)
maxClassProcesses n (10)
maxProcesses n (50)
minProcesses n (5)
multiThreshhold n (50)
singleThreshhold
verwendet. pass-header header none
priority n (0)
setpriority()
).processSlack n (5 seconds)
maxProcesses - processSlack
überschreitet, leitet der
Prozessmanager die Beendigungsmaßnahme (kill) ein. Bei hoher
Arbeitslast kann dadurch die Leistung verbessert werden, indem einige der
inaktivsten Anwendungsinstanzen beendet werden, bevor der Wert von
maxProcesses
erreicht wird.
restart none
restart-delay n (5 Sekunden)
singleThreshhold n (0)
startDelay n (3 Sekunden)
startDelay
muss niedriger sein als der von appConnTimeout
, damit dieses Attribut angewendet
wird.updateInterval n (300 Sekunden)
appConnTimeout n (0 Sekunden)
connect()
).
Wenn das Zeitlimit abläuft, tritt ein Server-Fehler ( SERVER_ERROR) auf.
Werte ungleich Null geben den Zeitraum an, der bei der select()
-Operation
für das Schreiben in den Dateideskriptor verwendet wird, der von einer nicht endlos wartenden
Verbindungsanforderung (connect()) zurückgegeben wird.
Nicht endlos wartende Verbindungsanforderungen (connect()
) verursachen auf
zahlreichen Plattformen Probleme. Lesen Sie in diesem Zusammenhang auch die Erklärungen
zum Attribut "-idle-timeout", das ähnliche Ergebnisse, allerdings in einer verständlicheren
Weise, liefert.idle-timeout n (30 Sekunden)
error
LogLevel
).
Der Inaktivitätszeitgeber ist nur so lange wirksam, wie eine Verbindung mit der
FastCGI-Anwendung ansteht. Wenn eine eine Anforderung in die Warteschlange einer
Anwendung gestellt wird, die Anwendung in diesem Zeitraum jedoch nicht reagiert
(durch Schreiben und Zurückschreiben in den Puffer), wird die Anwendung beendet. Sollte
die Übertragung mit der Anwendung abgeschlossen sein, mit dem Client jedoch nicht
(in diesem Fall wird die Antwort in den Puffer gestellt), gilt das Zeitlimit nicht.flush none
mod_fastcgi
die Daten, um die Anwendung so schnell wie möglich wieder freizugeben.host Host-Name:Port none
-socket
und -host
schließen sich gegenseitig aus.Pass-header Header none
socket Dateiname none
FastCgiIpcDir
interpretiert. Die Optionen -socket
und -port
schließen sich gegenseitig aus.
UNIX: Mit der Anweisung FastCgiIpcDir
geben Sie das Verzeichnis
an, in dem die Dateien des UNIX-Socket, der für die Kommunikation zwischen den Anwendungen
und dem Web-Server verwendet wird, gespeichert (und bei externen FastCGI-Anwendungen)
gesucht) werden sollen. Beginnt der Verzeichnisname nicht mit einem
Schrägstrich (/), wird er relativ zur Server-Root
interpretiert. Ist das Verzeichnis nicht vorhanden, wird versucht, das Verzeichnis mit den
richtigen Berechtigungen zu erstellen. Geben Sie kein Verzeichnis außerhalb des lokalen
Dateisystems an. Wenn Sie das Standardverzeichnis (oder ein anderes Verzeichnis unter
/tmp
) verwenden, wird mod_fastcgi
beendet, wenn das System
Dateien aus dem Verzeichnis /tmp
löscht.
Windows NT: Mit der Anweisung FastCgiIpcDir geben Sie für Name die Root für die benannten Pipes an, die für die Kommunikation zwischen der Anwendung und dem Web-Server verwendet werden. Der Name muss im Format \\.\pipe\Name_der_Pipe angegeben werden. Der Teil Name_der_Pipe kann alle Zeichen außer dem umgekehrten Schrägstrich enthalten.
Die Anweisung FastCgiIpcDir
muss vor den Anweisungen
FastCgiServer
und
FastCgiExternalServer
stehen
(die UNIX-Sockets verwenden). Der Web-Server muss in der Lage sein, dieses Verzeichnis
zu lesen, in das Verzeichnis zu schreiben und in das Verzeichnis zu wechseln (es zu
durchsuchen). Sonst sollte niemand auf dieses Verzeichnis zugreifen können.
Mit der Anweisung FastCgiServer
definieren Sie die Datei Dateiname als
statische FastCGI-Anwendung. Beginnt der Dateiname nicht mit einem Schrägstrich (/), wird
er relativ zur Server-Root interpretiert.
Standardmäßig startet der Prozessmanager eine Instanz der Anwendung mit den im folgenden
in runden Klammern angegebenen Standardkonfigurationseinstellungen. Sollte eine statische
Anwendungsinstanz aus irgendeinem Grund beendet werden, erzeugt mod_fastcgi
eine
weitere Instanz, die die beendete Instanz ersetzt, und protokolliert das Ereignis
(mit der Warnung Protokollstufe
).
Die folgenden Optionen sind verfügbar (Groß-/Kleinschreibung beachten):
appConnTimeoutn (0 Sekunden)
connect()
).
Wenn das Zeitlimit abläuft, tritt ein Server-Fehler ( SERVER_ERROR) auf.
Werte ungleich Null geben den Zeitraum an, der bei der select()
-Operation
für das Schreiben in den Dateideskriptor verwendet wird, der von einer nicht endlos wartenden
Verbindungsanforderung (connect()) zurückgegeben wird.
Nicht endlos wartende Verbindungsanforderungen (connect()
) verursachen auf
zahlreichen Plattformen Probleme. Lesen Sie in diesem Zusammenhang auch die Erklärungen
zum Attribut "-idle-timeout", das ähnliche Ergebnisse, allerdings in einer verständlicheren
Weise, liefert.idle-timeout n (30 Sekunden)
error
LogLevel
).
Der Inaktivitätszeitgeber ist nur so lange wirksam, wie eine Verbindung mit der
FastCGI-Anwendung ansteht. Wenn eine eine Anforderung in die Warteschlange einer
Anwendung gestellt wird, die Anwendung in diesem Zeitraum jedoch nicht reagiert
(durch Schreiben und Zurückschreiben in den Puffer), wird die Anwendung beendet. Sollte
die Übertragung mit der Anwendung abgeschlossen sein, mit dem Client jedoch nicht
(in diesem Fall wird die Antwort in den Puffer gestellt), gilt das Zeitlimit nicht.initial-env name[=Wert] none]
none
init-start-delay n(1
Sekunde)
Flush none
mod_fastcgi
die Daten, um die Anwendung so schnell wie möglich wieder freizugeben.Listen-queue-depth n (100)
Pass-header Header none
processes n (1)
Priority n (0)
setpriority()
).port n none
-socket
und -port
schließen sich gegenseitig aus.Restart-delay n (5 Sekunden)
Socket Dateiname (wird generiert)
FastCgiIpcDir
festgelegten Verzeichnis. Wenn diese Option verwendet
wird, können andere Anwendungen (z. B. cgi-fcgi
) auf derselben Maschine
oder über externe FastCGI-Anwendungsdefinitionen (FastCgiExternalServer
) auf
die Anwendung zugreifen.
Werden weder -socket
noch -port
angegeben, generiert das Modul
einen Dateinamen für den UNIX-Domänen-Socket. Die Optionen -socket
und -port
schließen sich gegenseitig aus.
Mit der Anweisung FastCgiSuexec
können Sie die Unterstützung
für einen suexec-Wrapper aktivieren.
FastCgiSuexec
erfordert, dass suexec auf dem Apache-Server (für CGI) aktiviert ist.
Um denselben suexec-Wrapper zu verwenden, der vom Apache-Server genutzt wird, müssen Sie
die Anweisung FastCgiSuexec
auf On setzen. Wenn Sie einen
anderen suexec-Wrapper verwenden möchten geben Sie den Dateinamen
des gewünschten suexec-Wrapper an. Beginnt der Dateiname nicht mit einem Schrägstrich
(/), wird dieser relativ zur Server-Root
interpretiert.
Wenn FastCgiSuexec
aktiviert ist, spielt die Position der Definitionen für
statische und externe FastCGI-Anwendungen eine bedeutende Rolle. Diese Definitionen
übernehmen den Benutzer und die Gruppe aus den Anweisungen User
und
Group
des virtuellen Servers, auf dem sie definiert wurden.
Die Anweisungen User
und Group
müssen vor den Definitionen
der FastCGI-Anwendungen stehen. Dies beschränkt die FastCGI-Anwendung
jedoch nicht auf den virtuellen Server, auf dem sie definiert wurde.
Die Anwendung kann Anforderungen aller virtuellen Server mit demselben Benutzer und
derselben Gruppe bedienen. Falls eine Anforderung für eine FastCGI-Anwendung
ohne entsprechende Definition, aber mit dem richtigen Benutzer und der richtigen
Gruppe empfangen wird, wird eine dynamische Instanz der Anwendung mit dem richtigen
Benutzer und der richtigen Gruppe gestartet. Dies kann dazu führen, dass
es mehrere Instanzen derselben Anwendung, allerdings mit unterschiedlichen Benutzern
und Gruppen, gibt. Falls dies ein Problem darstellt, verhindern
Sie die Navigation zur Anwendung von anderen virtuellen Servern oder konfigurieren
Sie die virtuellen Server alle mit demselben Benutzer und derselben Gruppe.
Weitere Informationen über suexec finden Sie in der Apache-Dokumentation. Sie müssen die Auswirkungen von suexec auf die Sicherheit unbedingt verstehen.