La directive FastCgiAccessChecker sert à désigner une application FastCGI comme valideur d'accès par répertoire. La phase d'accès à Apache précède l'authentification de l'utilisateur. La décision d'accorder ou non les droits d'accès à la ressource demandée est donc basée sur les en-têtes HTTP soumis avec la demande. Les autoriseurs construits autour d'applications FastCGI sont surtout utiles lorsque la décision d'accorder ou non les droits d'accès est basée en partie sur une composante dynamique telle que l'heure à laquelle la demande d'accès a lieu ou le règlement de la facture d'hébergement par le propriétaire du domaine concerné.
Si le nom de fichier de l'application FastCGI ne correspond à aucune définition statique ou externe, l'application est lancée en tant qu'application FastCGI dynamique. Si le nom de fichier ne commence pas par une barre oblique (/), il est supposé être relatif à la racine du serveur (ServerRoot).
FastCgiAccessChecker est utilisée dans les conteneurs Directory
(répertoire) et Location
(emplacement).
<Directory htdocs/protected>
FastCgiAccessChecker fcgi-bin/access-checker
</Directory>
mod_fastcgi envoie la quasi-totalité des variables d'environnement standard généralement à la disposition des gestionnaires de demandes CGI/FastCGI. Tous les en-têtes renvoyés par une application de validation d'accès dans une réponse positive (Statut : 200) sont transmis aux sous-processus (appels de CGI/FastCGI) en tant que variables d'environnement. Tous les en-têtes renvoyés dans une réponse négative sont transmis au client. Le comportement obéissant à la spécification FastCGI peut être obtenu à l'aide de l'option "-compat".
mod_fastcgi attribue la valeur "ACCESS_CHECKER" à la variable d'environnement "FCGI_APACHE_ROLE" pour indiquer quelle phase d'autorisation (spécifique à Apache) est en cours d'exécution.
Les applications d'autorisation FastCGI ne peuvent pas renvoyer de réponses négatives personnalisées. Vous pouvez utiliser la directive ErrorDocument à la place (le document peut être servi par une application FastCGI).
L'attribution explicite de la valeur Off à la directive FastCgiAccessCheckerAuthoritative
permet de transmettre la responsabilité du contrôle d'accès aux modules de niveau inférieur (tels que définis
dans les fichiers Configuration
et modules.c
) si l'application
FastCGI refuse l'accès.
Par défaut, la responsabilité du contrôle d'accès n'est pas transmise aux modules de niveau
inférieur et un refus d'accès se traduira par
une réponse Forbidden (accès interdit). Réfléchissez bien avant d'invalider ce comportement par défaut.
La directive FastCgiAuthenticator sert à désigner une application FastCGI comme authentificateur par répertoire. Un authentificateur vérifie que le demandeur est bien qui il prétend être en comparant le nom d'utilisateur et le mot de passe qu'il fournit à une liste (ou une base de données) dans laquelle sont répertoriés les utilisateurs et les mots de passe connus. Les authentificateurs construits autour d'applications FastCGI sont surtout utiles lorsque la base de données des utilisateurs est gérée dans un programme existant indépendant ou réside sur une machine autre que celle qui héberge le serveur Web.
Si le nom de fichier de l'application FastCGI ne correspond à aucune définition statique ou externe, l'application est lancée en tant qu'application FastCGI dynamique. Si le nom de fichier ne commence pas par une barre oblique (/), il est supposé être relatif à la racine du serveur (ServerRoot).
FastCgiAuthenticator est utilisée dans le conteneur Directory (répertoire) ou Location (emplacement) et doit inclure les directives AuthType et AuthName. Seul le type d'authentification Basic (de base) est pris en charge. Pour fonctionner correctement, FastCgiAuthenticator doit être accompagnée d'une directive "require" ou FastCgiAuthorizer.
<Directory htdocs/protected>
AuthType Basic
AuthName ProtectedRealm
FastCgiAuthenticator fcgi-bin/authenticator
require valid-user
</Directory>
mod_fastcgi
envoie la quasi-totalité des variables d'environnement standard
généralement à la disposition des gestionnaires de demandes
CGI/FastCGI. Tous les en-têtes renvoyés par une application d'authentification
dans une réponse positive (Statut : 200) sont transmis aux
sous-processus (appels de CGI/FastCGI) en tant que variables d'environnement. Tous les en-têtes
renvoyés dans une réponse négative sont transmis au client. Le comportement obéissant à la spécification
FastCGI peut être obtenu à l'aide de l'option "-compat
".
Mod_fastcgi
attribue la valeur "AUTHENTICATOR" à la variable
d'environnement "FCGI_APACHE_ROLE" pour indiquer quelle phase d'autorisation
(spécifique à Apache) est en cours d'exécution.
Les applications d'autorisation FastCGI ne peuvent pas renvoyer de réponses négatives personnalisées. Vous pouvez utiliser la directive ErrorDocument à la place (une application FastCGI peut servir le document).
L'attribution explicite de la valeur Off à la directive
FastCgiAuthenticatorAuthoritative
permet de transmettre la responsabilité de l'authentification
aux modules de niveau inférieur (tels que définis dans les fichiers
Configuration
et modules.c
) si l'application
FastCGI n'authentifie pas l'utilisateur.
Cette possibilité peut être utilisée conjointement avec un
fichier d'utilisateurs
(AuthUserFile
)
bien protégé, dans lequel sont répertoriés les quelques utilisateurs qui bénéficient de
pouvoirs administratifs.
Par défaut, la responsabilité de l'authentification n'est pas dévolue aux modules de niveau inférieur et une demande d'accès par un utilisateur inconnu se traduira par une réponse Authorization Required (autorisation requise). Réfléchissez bien avant d'invalider ce comportement par défaut.
La directive FastCgiAuthorizer
permet de définir une application FastCGI en tant qu'autoriseur par répertoire. Les autoriseurs accordent ou refusent à un utilisateur authentifiés les droits d'accès à une ressource qu'il a demandé. Les authoriseurs construit autour d'applications FastCGI sont surtout utiles lorsque la décision d'accorder ou non l'accès est basée en partie sur une composante dynamique telle que l'heure à laquelle la demande d'accès a lieu ou si l'utilisateur a payé sa facture ou non.
Si le nom de fichier de l'application FastCGI ne correspond à aucune définition statique ou externe, l'application est lancée en tant qu'application FastCGI dynamique. Si le nom de fichier ne commence pas par une barre oblique (/), il est supposé être relatif à la racine du serveur (ServerRoot).
FastCgiAuthorizer
est utilisé dans le conteneur Directory
ou Location
et doit inclure les directives AuthType et AuthName. Pour fonctionner correctement, FastCgiAuthorizer doit être accompagnée d'une directive d'authentification telle que FastCgiAuthenticator, AuthUserFile, AuthDBUserFile ou
AuthDBMUserFile.
<Directory htdocs/protected>
AuthType Basic
AuthName ProtectedRealm
AuthDBMUserFile conf/authentication-database
FastCgiAuthorizer fcgi-bin/authorizer
</Directory>
mod_fastcgi
envoie la quasi-totalité des variables d'environnement standard
généralement à la disposition des gestionnaires de demandes CGI/FastCGI. Tous
les en-têtes renvoyés par une application d'authentification
dans une réponse positive (Statut : 200) sont transmis aux
sous-processus (appels de CGI/FastCGI) en tant que variables
d'environnement. Tous les en-têtes renvoyés dans une réponse négative
sont transmis au client. Le comportement obéissant à la spécification
FastCGI peut être obtenu à l'aide de l'option "-compat
".
Mod_fastcgi
attribue la valeur "AUTHORIZER" à la variable d'environnement
"FCGI_APACHE_ROLE" pour indiquer quelle phase d'autorisation (spécifique à Apache) est en cours d'exécution.
Les applications d'autorisation FastCGI ne peuvent pas renvoyer de réponses négatives personnalisées. Vous pouvez utiliser la directive ErrorDocument à la place (une application FastCGI peut servir le document).
L'attribution explicite de la valeur Off à la directive
FastCgiAuthenticatorAuthoritative
permet de transmettre la responsabilité de l'authentification
aux modules de niveau inférieur (tels que définis dans les fichiers
Configuration
et modules.c
) si l'application
FastCGI n'authentifie pas l'utilisateur.
Cette possibilité peut être utilisée conjointement avec un
fichier d'utilisateurs
(AuthUserFile
)
bien protégé, dans lequel sont répertoriés les quelques utilisateurs qui bénéficient de
pouvoirs administratifs.
Par défaut, la responsabilité de l'authentification n'est pas dévolue aux modules de niveau inférieur et une demande d'accès par un utilisateur inconnu se traduira par une réponse Authorization Required (autorisation requise). Réfléchissez bien avant d'invalider ce comportement par défaut.
La directive FastCgiConfig
définit les paramètres par défaut de
toutes les applications FastCGI dynamiques. Elle n'a aucun effet sur les
applications statiques ou externes.
Les applications dynamiques sont démarrées à la demande, et non à l'initialisation du serveur. En cas de demande importante, des instances supplémentaires de l'application sont lancées. Ces instances sont ensuite supprimées (éliminées) à mesure que la demande chute. Ce processus est régi par un grand nombre d'options.
Dans la syntaxe ci-dessus, option représente l'une des options suivantes (la casse des caractères doit être respectée) :
appConnTimeout n (0 seconde)
connect()
bloquante doit être utilisée.
En cas d'expiration de ce délai, une erreur SERVER_ERROR est émise.
Toute valeur non nulle spécifie le temps accordé à une méthode
select()
pour écrire dans le descripteur de fichier renvoyé par
une méthode connect()
non bloquante.
L'emploi de méthodes connect()
non bloquantes entraîne des difficultés
sur de nombreuses plateformes. Utilisez plutôt l'option -idle-timeout, qui produit
des résultats similaires tout en offrant une meilleure portabilité.idle-timeout n (30 secondes)
LogLevel
error
).
Le décompte de cette durée a lieu uniquement lorsqu'une connexion avec
l'application FastCGI est en suspens. Si une demande est en attente de traitement
par l'application mais que celle-ci ne répond pas (en écrivant et
en vidant les données) dans le délai imparti, la demande est abandonnée.
Si la communication avec l'application est terminée, mais que celle avec le client
ne l'est pas encore (la réponse étant stockée en mémoire tampon), ce délai ne s'applique pas. autoUpdate aucune
-restart
.gainValue n (0.5)
gainValue
),
si bien que l'adoption d'une valeur proche de 0 pour gainValue
leur donne plus de poids
qu'aux valeurs de l'intervalle d'analyse en cours, lesquelles sont multipliées par gainValue
.initial-env nom[=valeur]
aucune
init-start-delay n (1 seconde)
killInterval n (300 secondes)
listen-queue-depth n (100)
maxClassProcesses n (10)
maxProcesses n (50)
minProcesses n (5)
multiThreshhold n (50)
singleThreshhold
. pass-header en-tête aucune
priority n (0)
setpriority()
).processSlack n (5 secondes)
maxProcesses
moins celle
de processSlack
, le gestionnaire de processus appelle la routine d'élimination.
Ce procédé, qui a pour but d'améliorer les performances à charge élevée, élimine
certaines des instances d'application les moins actives avant que la limite
définie par maxProcesses
ne soit atteinte.restart aucune
restart-delay n (5 secondes)
singleThreshhold n (0)
startDelay n (3 secondes)
startDelay
doit être
inférieur à appConnTimeout
. updateInterval n (300 secondes)
appConnTimeout n (0 seconde)
connect()
bloquante doit être utilisée.
En cas d'expiration de ce délai, une erreur SERVER_ERROR est émise.
Toute valeur non nulle spécifie le temps accordé à une méthode
select()
pour écrire dans le descripteur de fichier renvoyé par
une méthode connect()
non bloquante.
L'emploi de méthodes connect()
non bloquantes entraîne des difficultés
sur de nombreuses plateformes. Utilisez plutôt l'option -idle-timeout, qui produit
des résultats similaires tout en offrant une meilleure portabilité.idle-timeout n (30 secondes)
LogLevel
error
).
Le décompte de cette durée a lieu uniquement lorsqu'une connexion avec
l'application FastCGI est en suspens. Si une demande est en attente de traitement
par l'application mais que celle-ci ne répond pas (en écrivant et
en vidant les données) dans le délai imparti, la demande est abandonnée.
Si la communication avec l'application est terminée, mais que celle avec le client
ne l'est pas encore (la réponse étant stockée en mémoire tampon), ce délai ne s'applique pas. flush aucune
mod_fastcgi
stocke les
données en mémoire tampon afin de libérer l'application aussi vite que possible.host nomhôte:port aucune
-socket
et -host
s'excluent mutuellement.Pass-header en-tête aucune
socket nomfichier aucune
FastCgiIpcDir
.
Les options -socket
et -port
s'excluent mutuellement.
UNIX : La directive FastCgiIpcDir
spécifie le répertoire
où stocker (et rechercher, dans le cas d'applications FastCGI externes) les fichiers
socket UNIX servant à la communication entre les applications et le serveur Web.
Si le répertoire indiqué ne commence pas par une barre oblique (/), il est supposé
être relatif à la racine du serveur
(ServerRoot).
Si le répertoire n'existe pas, le système tente de le créer avec les droits
appropriés. N'indiquez pas de répertoire qui ne se trouve pas dans un système
de fichiers local. L'utilisation du répertoire par défaut (ou d'un sous-répertoire
de /tmp
) provoquera l'échec
de mod_fastcgi
si votre système supprime périodiquement les
fichiers de /tmp
.
Windows NT : La directive FastCgiIpcDir spécifie le nom du répertoire racine de stockage des tubes nommés (named pipes) servant à la communication entre l'application et le serveur Web. Ce nom doit être de la forme \\.\pipe\nomtube. La partie nomtube peut contenir n'importe quel caractère, mais pas de barre oblique inversée.
La directive FastCgiIpcDir
doit précéder toute directive FastCgiServer
ou FastCgiExternalServer
(celles-ci utilisant
des sockets UNIX). Le serveur Web doit être le seul à pouvoir accéder au répertoire désigné
par cette directive. Il doit bénéficier d'un accès en lecture, en écriture et en
exécution (recherche).
La directive FastCgiServer
désigne nomfichier comme application
FastCGI statique. Si le nom de fichier ne commence pas
par une barre oblique (/), il est supposé être relatif
à la racine du serveur (ServerRoot).
Par défaut, le gestionnaire de processus démarre une instance unique de l'application
avec les valeurs de configuration par défaut indiquées ci-après entre parenthèses.
Si une instance d'application statique s'arrête pour une raison quelconque,
mod_fastcgi
en engendre une autre pour la remplacer et consigne
l'événement (au niveau LogLevel
warn
).
Dans la syntaxe ci-dessus, option représente l'une des options suivantes (la casse des caractères doit être respectée) :
appConnTimeoutn (0 seconde)
connect()
bloquante doit être utilisée.
En cas d'expiration de ce délai, une erreur SERVER_ERROR est émise.
Toute valeur non nulle spécifie le temps accordé à une méthode
select()
pour écrire dans le descripteur de fichier renvoyé par
une méthode connect()
non bloquante.
L'emploi de méthodes connect()
non bloquantes entraîne des difficultés
sur de nombreuses plateformes. Utilisez plutôt l'option -idle-timeout, qui produit
des résultats similaires tout en offrant une meilleure portabilité.idle-timeout n (30 secondes)
LogLevel
error
).
Le décompte de cette durée a lieu uniquement lorsqu'une connexion avec
l'application FastCGI est en suspens. Si une demande est en attente de traitement
par l'application mais que celle-ci ne répond pas (en écrivant et
en vidant les données) dans le délai imparti, la demande est abandonnée.
Si la communication avec l'application est terminée, mais que celle avec le client
ne l'est pas encore (la réponse étant stockée en mémoire tampon), ce délai ne s'applique pas. initial-env nom[=valeur] aucune]
aucune
init-start-delay n(1 seconde)
Flush aucune
mod_fastcgi
stocke les
données en mémoire tampon afin de libérer l'application aussi vite que possible.Listen-queue-depth n (100)
Pass-header en-tête aucune
processes n (1)
Priority n (0)
setpriority()
).port n aucune
-socket
et -port
s'excluent mutuellement. Restart-delay n (5 secondes)
Socket nomfichier (gen'd)
FastCgiIpcDir
.
Cette option rend l'application accessible à d'autres applications (par exemple, cgi-fcgi
)
sur la même machine ou via une définition d'application FastCGI externe (FastCgiExternalServer
).
Si aucune des options -socket
et -port
n'est indiquée,
le module génère lui-même un nom de fichier de socket de domaine UNIX.
Les options -socket
et -port
s'excluent mutuellement.
La directive FastCgiSuexec
sert à activer le support d'un encapsuleur (wrapper) suexec.
FastCgiSuexec
exige l'activation de suexec dans Apache (pour CGI).
Pour utiliser le même encapsuleur que celui d'Apache,
attribuez la valeur On à la directive FastCgiSuexec
Pour utiliser un encapsuleur différent, indiquez son nom de fichier.
Si ce nom de fichier ne commence pas par une barre oblique (/),
il est supposé être relatif à la racine du serveur
(ServerRoot).
Dès lors que FastCgiSuexec
est activé, l'emplacement des définitions
des applications FastCGI statiques ou externes devient très important.
Ces applications
héritent en effet de l'ID utilisateur et du groupe spécifiés dans les
directives User
et Group
de l'hôte virtuel dans lequel
elles ont été définies. Les directives User
et Group
doivent précéder les définitions d'application FastCGI.
Notez qu'une application FastCGI n'est pas pour autant limitée à
l'hôte virtuel dans lequel elle a été définie. Elle est autorisée à répondre aux
demandes à partir de n'importe quel hôte virtuel s'exécutant avec le même ID utilisateur
et le même groupe. Si une application FastCGI reçoit une demande
et qu'il n'existe aucune définition de cette application avec l'ID utilisateur et le groupe
demandés, une instance dynamique de l'application est lancée sous l'ID utilisateur et
le groupe corrects.
Cela peut conduire à l'existence simultanée de plusieurs exemplaires de l'application
s'exécutant chacun sous une combinaison ID utilisateur/groupe différente.
Si cela vous gêne, faites en sorte que la navigation vers l'application soit impossible
à partir des autres hôtes virtuels ou configurez ces derniers pour qu'ils s'exécutent
sous le même ID utilisateur et le même groupe.
Pour plus de détails sur suexec, consultez la documentation Apache (veillez notamment à bien comprendre les implications en matière de sécurité).