From d6139939af5bf84916a37db8ff106dad82ff81ad Mon Sep 17 00:00:00 2001
From: Lucien Gentis
Ainsi, pour être en mesure de traiter le protocole SCGI, +
Ainsi, pour être en mesure de traiter le protocole SCGI,
N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les +
N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les serveurs mandataires ouverts sont dangereux non seulement pour - votre réseau, mais aussi pour l'Internet au sens large.
+ votre réseau, mais aussi pour l'Internet au sens large.La passerelle à répartition de charge nécessite le chargement du +
La passerelle à répartition de charge nécessite le chargement du
module
En plus des directives de configuration qui permettent de
- contrôler le comportement de
SetEnvIf Request_URI . proxy-scgi-pathinfo
La directive sendfile
ou d'autres
optimisations, ce qui n'est pas possible si les fichiers passent par
la socket du serveur cible. En outre, les fichiers ne sont transmis
qu'une seule fois.
L'argument de la directive
-
Off
On
X-Sendfile
, et interprète sa valeur comme
- le nom du fichier à servir. L'en-tête est ensuite supprimé de la
- réponse finale. Cet argument produit le même effet que
+ X-Sendfile
, et interprète sa valeur comme
+ le nom du fichier à servir. L'en-tête est ensuite supprimé de la
+ réponse finale. Cet argument produit le même effet que
ProxySCGISendfile X-Sendfile
.On
, mais au lieu de rechercher le nom
- d'en-tête codé en dur X-Sendfile
, c'est la
- valeur de l'argument qui constitue le nom de l'en-tête
- à rechercher.On
, mais au lieu de rechercher le nom
+ d'en-tête codé en dur X-Sendfile
, c'est la
+ valeur de l'argument qui constitue le nom de l'en-tête
+ Ã rechercher.La directive OK
(200
), et si
- la réponse contient un en-tête Location
- (ou un autre en-tête défini) dont la valeur
- débute par un slash (/
). Cette valeur est interprétée
+ une URL différente. Cette fonctionnalité trouve son origine dans
+ OK
(200
), et si
+ la réponse contient un en-tête Location
+ (ou un autre en-tête défini) dont la valeur
+ débute par un slash (/
). Cette valeur est interprétée
comme une nouvelle URL locale vers laquelle Apache httpd effectue sa
redirection.
De ce point de vue,
De ce point de vue, Location
.
Location
.
Le module
Le module
Les directives sont interprétées selon l'ordre dans lequel elles - apparaîssent dans les fichiers de configuration. Ainsi, des - séquences plus complexes peuvent être utilisées, comme dans cet - exemple qui définit netscape si le navigateur est Mozilla et non + caractéristique de la requête correspond ou non aux expressions + rationnelles que vous spécifiez. Ces variables d'environnement + peuvent être utilisées par d'autres parties du serveur pour prendre + des décisions quant aux actions à entreprendre, et pour déterminer + si les scripts CGI et les pages SSI doivent pouvoir y accéder.
+ +Les directives sont interprétées selon l'ordre dans lequel elles + apparaîssent dans les fichiers de configuration. Ainsi, des + séquences plus complexes peuvent être utilisées, comme dans cet + exemple qui définit netscape si le navigateur est Mozilla et non MSIE.
Lorsque le serveur cherche un chemin via une
La directive User-Agent
. Les deux lignes suivantes produisent le même
+ module="mod_setenvif">SetEnvIf, qui définit des variables
+ d'environnement en fonction du contenu de l'en-tête de requête HTTP
+ User-Agent
. Les deux lignes suivantes produisent le même
effet :
Quelques exemples supplémentaires :
+Quelques exemples supplémentaires :
La directive
La directive
La directive
Host
,
+ plus d'information à leur propos) ; par exemple : Host
,
User-Agent
, Referer
, ou
Accept-Language
. Il est possible d'utiliser une
- expression rationnelle pour spécifier un jeu d'en-têtes de
- requête.Remote_Host
- le nom d'hôte (s'il est disponible)
- du client qui effectue la requêteRemote_Host
- le nom d'hôte (s'il est disponible)
+ du client qui effectue la requêteRemote_Addr
- l'adresse IP du client qui effectue
- la requêteServer_Addr
- l'adresse IP du serveur qui a reçu
- la requête (uniquement à partir des versions supérieures à
+ Server_Addr
- l'adresse IP du serveur qui a reçu
+ la requête (uniquement à partir des versions supérieures Ã
2.0.43)Request_Method
- Le nom de la méthode HTTP
- utilisée (GET
, POST
, et
+ Request_Method
- Le nom de la méthode HTTP
+ utilisée (GET
, POST
, et
cetera...)Request_Protocol
- le nom et la version du
- protocole utilisé pour la requête (par exemple "HTTP/0.9",
+ protocole utilisé pour la requête (par exemple "HTTP/0.9",
"HTTP/1.1", etc...)Request_URI
- la ressource demandée dans la ligne
- de requête HTTP -- en général la partie de l'URL suivant le
- protocole et le nom du serveur, sans la chaîne d'arguments. Voir
+ Request_URI
- la ressource demandée dans la ligne
+ de requête HTTP -- en général la partie de l'URL suivant le
+ protocole et le nom du serveur, sans la chaîne d'arguments. Voir
la directive SetEnvIf[NoCase]
précédentes sont disponibles pour
-effectuer des tests de cette manière. 'Précédentes' signifie qu'elles se
-trouvent à un niveau plus global de la configuration (par exemple au
+résultat de comparaisons précédentes. Seules les variables
+d'environnement définies par des directives
+SetEnvIf[NoCase]
précédentes sont disponibles pour
+effectuer des tests de cette manière. 'Précédentes' signifie qu'elles se
+trouvent à un niveau plus global de la configuration (par exemple au
niveau du serveur principal), ou plus haut chronologiquement dans le
contexte de la directive. Les variables d'environnement ne seront prises
-en compte que si aucune correspondance n'a été trouvée parmi les
-caractéristiques de la requête, et si attribut n'a pas été
-spécifié sous la forme d'une expression rationnelle.Le second argument (regex) est une
Le reste des arguments constitue les noms des variables à définir, -ainsi que les valeurs optionnelles qui doivent leur être affectées. Ils -peuvent se présenter sous les formes suivantes :
+Le reste des arguments constitue les noms des variables à définir, +ainsi que les valeurs optionnelles qui doivent leur être affectées. Ils +peuvent se présenter sous les formes suivantes :
nom-variable
, ornom-variable=valeur
Dans la première forme, la valeur sera définie à "1". Dans la
- seconde forme, la variable sera supprimée si elle a été définie au
- préalable, et dans la troisième forme, la variable sera définie à la
- valeur littérale spécifiée par valeur
. Depuis
- la version 2.0.51, Apache httpd reconnaît les occurrences de variables
- $1
..$9
à l'intérieur de
+
Dans la première forme, la valeur sera définie à "1". Dans la
+ seconde forme, la variable sera supprimée si elle a été définie au
+ préalable, et dans la troisième forme, la variable sera définie à la
+ valeur littérale spécifiée par valeur
. Depuis
+ la version 2.0.51, Apache httpd reconnaît les occurrences de variables
+ $1
..$9
à l'intérieur de
valeur
, et les remplace par les
- sous-expressions entre parenthèses correspondantes de
- regex.
$0
permet d'accéder à l'ensemble de la chaîne
+ qui correspond à ce modèle.
Les trois premières lignes définissent la variable +
Les trois premières lignes définissent la variable
d'environnement objet_est_une_image
si l'objet de la
- requête est un fichier image, et la quatrième définit la variable
- référant_intra_site
si la page référante se trouve
+ requête est un fichier image, et la quatrième définit la variable
+ référant_intra_site
si la page référante se trouve
quelque part dans le site web
www.mon-domaine.example.com
.
La dernière ligne définit la variable d'environnement
- HAVE_TS
si la requête contient un en-tête dont le nom
- commence par "TS" et dont la valeur commence par tout caractère du
+
La dernière ligne définit la variable d'environnement
+ HAVE_TS
si la requête contient un en-tête dont le nom
+ commence par "TS" et dont la valeur commence par tout caractère du
jeu [a-z].
La directive ap_expr
. Cette
- expression est évaluée à l'exécution, et utilise les variables
- d'environnement env-variable de la même manière que la
+ expression est évaluée à l'exécution, et utilise les variables
+ d'environnement env-variable de la même manière que la
directive
Dans cet exemple, la variable d'environnement
- iso_delivered
est définie chaque fois que notre
+ iso_delivered
est définie chaque fois que notre
application tente de l'envoyer via X-Sendfile
.
Il pourrait être plus utile de définir une variable rfc1918 si - l'adresse IP distante est une adresse privée au sens de la RFC 1918 +
Il pourrait être plus utile de définir une variable rfc1918 si + l'adresse IP distante est une adresse privée au sens de la RFC 1918 :
La directive
Cette ligne va définir la variable d'environnement +
Cette ligne va définir la variable d'environnement
site
avec la valeur "example
" si le champ
- d'en-tête de requête HTTP Host:
est présent et contient
+ d'en-tête de requête HTTP Host:
est présent et contient
Example.Org
, example.org
, ou une autre
- combinaison des mêmes caractères, sans tenir compte de la casse.
Sur les systèmes d'exploitation sélectionnés, ce module peut être - utilisé pour charger des modules dans le serveur HTTP Apache en cours d'exécution - grâce au mécanisme des Dynamic Shared Object ou Objets Partagés - Dynamiquement (DSO), et évite ainsi de devoir effectuer une +
Sur les systèmes d'exploitation sélectionnés, ce module peut être + utilisé pour charger des modules dans le serveur HTTP Apache en cours d'exécution + grâce au mécanisme des Dynamic Shared Object ou Objets Partagés + Dynamiquement (DSO), et évite ainsi de devoir effectuer une recompilation.
-Sous Unix, le code chargé provient en général de fichiers objet
- partagés possèdant en général l'extension .so
, alors
- que sous Windows, l'extension peut être soit .so
, soit
+
Sous Unix, le code chargé provient en général de fichiers objet
+ partagés possèdant en général l'extension .so
, alors
+ que sous Windows, l'extension peut être soit .so
, soit
.dll
.
En général, les modules compilés pour une version majeure du +
En général, les modules compilés pour une version majeure du serveur HTTP Apache ne fonctionneront pas avec une autre (par - exemple de 1.3 à 2.0 ou 2.0 à 2.2). D'une version majeure à l'autre, - il y a souvent des modifications d'API qui nécessitent des + exemple de 1.3 à 2.0 ou 2.0 à 2.2). D'une version majeure à l'autre, + il y a souvent des modifications d'API qui nécessitent des modifications du module pour qu'il puisse fonctionner avec la nouvelle version.
Sous Windows, où les modules chargeables possèdent en général +
Sous Windows, où les modules chargeables possèdent en général
l'extension de nom de fichier .dll
, les modules Apache
httpd se nomment mod_nom-module.so
, tout comme sur les
autres plates-formes. Vous trouverez cependant encore des modules
@@ -69,40 +69,40 @@ Windows
.dll
.
Bien que mod_so
puisse encore charger des modules
- possèdant un nom du style ApacheModuleFoo.dll
,
- il est préférable d'utiliser la
+ possèdant un nom du style ApacheModuleFoo.dll
,
+ il est préférable d'utiliser la
nouvelle convention de nommage ; si vous modifiez votre module
chargeable pour la version 2.0, veuillez aussi modifier son nom pour
respecter cette nouvelle convention.
Les API des modules Apache httpd sous Unix et Windows sont identiques. Alors que certains modules s'appuient sur certains - aspects de l'architecture Unix non présents dans Windows, et ne - fonctionneront donc pas sur cette dernière plate-forme, de nombreux + aspects de l'architecture Unix non présents dans Windows, et ne + fonctionneront donc pas sur cette dernière plate-forme, de nombreux modules fonctionnent sous Windows avec peu ou pas de modification - par rapport à leur version Unix.
+ par rapport à leur version Unix. -Lorsqu'un module fonctionne, il peut être ajouté au serveur de - deux manières. Sous Unix, il peut être compilé dans le serveur. +
Lorsqu'un module fonctionne, il peut être ajouté au serveur de
+ deux manières. Sous Unix, il peut être compilé dans le serveur.
Comme Apache httpd pour Windows ne dispose pas du programme
- Configure
propre à Apache httpd pour Unix, le fichier source
- du module doit être ajouté au fichier projet Apache de base, et ses
- symboles ajoutés au fichier os\win32\modules.c
.
La seconde méthode consiste à compiler le module en tant que DLL,
- à savoir une bibliothèque partagée qui pourra être chargée dans le
- serveur en cours d'exécution via la directive
-
. Ces modules DLL
- peuvent être distribués et exécutés sur toute installation d'Apache
- httpd pour Windows, sans avoir à recompiler le serveur.
Pour créer un module DLL, il est nécessaire d'apporter une légère
- modification à son fichier source : l'enregistrement du module doit
- être exporté depuis la DLL (qui sera elle-même créée plus tard ;
+ Configure
propre à Apache httpd pour Unix, le fichier source
+ du module doit être ajouté au fichier projet Apache de base, et ses
+ symboles ajoutés au fichier os\win32\modules.c
.
La seconde méthode consiste à compiler le module en tant que DLL,
+ à savoir une bibliothèque partagée qui pourra être chargée dans le
+ serveur en cours d'exécution via la directive
+
Pour créer un module DLL, il est nécessaire d'apporter une légère
+ modification à son fichier source : l'enregistrement du module doit
+ être exporté depuis la DLL (qui sera elle-même créée plus tard ;
voir plus loin). Pour ce faire, ajoutez la macro
- AP_MODULE_DECLARE_DATA
(définie dans les fichiers
- d'en-têtes d'Apache httpd) à la définition de l'enregistrement de votre
- module. Par exemple, si votre module est déclaré comme suit :
AP_MODULE_DECLARE_DATA
(définie dans les fichiers
+ d'en-têtes d'Apache httpd) à la définition de l'enregistrement de votre
+ module. Par exemple, si votre module est déclaré comme suit :
Notez que cette macro ne sera prise en compte que sous Windows,
- si bien que le module poura être utilisé sans changement sous Unix,
- si besoin est. Alternativement, si vous êtes familier avec les
+ si bien que le module poura être utilisé sans changement sous Unix,
+ si besoin est. Alternativement, si vous êtes familier avec les
fichiers .DEF
, vous pouvez les utiliser pour exporter
l'enregistrement du module.
Maintenant, nous sommes prêts à créer une DLL contenant notre - module. Il va falloir pour cela la lier avec la bibliothèque - d'export libhttpd.lib qui a été créée au cours de la compilation de - la bibliothèque partagée libhttpd.dll. Il sera peut-être aussi - nécessaire de modifier la configuration du compilateur pour - s'assurer que les fichiers d'en-têtes d'Apache httpd seront correctement - localisés. Vous trouverez cette bibliothèque à la racine du - répertoire des modules de votre serveur. Il est souhaitable +
Maintenant, nous sommes prêts à créer une DLL contenant notre + module. Il va falloir pour cela la lier avec la bibliothèque + d'export libhttpd.lib qui a été créée au cours de la compilation de + la bibliothèque partagée libhttpd.dll. Il sera peut-être aussi + nécessaire de modifier la configuration du compilateur pour + s'assurer que les fichiers d'en-têtes d'Apache httpd seront correctement + localisés. Vous trouverez cette bibliothèque à la racine du + répertoire des modules de votre serveur. Il est souhaitable d'utiliser un fichier de module .dsp existant dans l'arborescence afin de s'assurer que l'environnement de compilation est - correctement configuré, mais vous pouvez aussi comparer les options - de compilation et d'édition de liens à votre fichier .dsp.
+ correctement configuré, mais vous pouvez aussi comparer les options + de compilation et d'édition de liens à votre fichier .dsp. -Ceci devrait créer une version DLL de votre module. Il vous
- suffit maintenant de l'enregistrer dans le répertoire
- modules
à la racine de votre serveur, et d'utiliser la
+
Ceci devrait créer une version DLL de votre module. Il vous
+ suffit maintenant de l'enregistrer dans le répertoire
+ modules
à la racine de votre serveur, et d'utiliser la
directive
La directive LoadFile permet de lier le fichier objet ou la - bibliothèque spécifié au serveur lors du démarrage ou du redémarrage +
La directive
Par exemple:
+Par exemple :
-La directive LoadModule permet de lier le fichier objet ou la - bibliothèque nom-fichier avec le serveur, et d'ajouter la - structure de module nommée module à la liste des modules +
La directive module
dans le fichier, et est référencé comme module dans le fichier, et est référencé comme Identificateur de
- module dans la documentation des modules. Exemple :
Par exemple :
charge le module spécifié depuis le sous-répertoire des modules - situé à la racine du serveur.
+charge le module spécifié depuis le sous-répertoire des modules + situé à la racine du serveur.