From fe39ffb8b90ae4e002ed73fe98617cd590abb467 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 27 Apr 2024 08:33:50 +0200 Subject: Adding upstream version 2.4.56. Signed-off-by: Daniel Baumann --- docs/manual/mod/mod_proxy.html.fr.utf8 | 2472 ++++++++++++++++++++++++++++++++ 1 file changed, 2472 insertions(+) create mode 100644 docs/manual/mod/mod_proxy.html.fr.utf8 (limited to 'docs/manual/mod/mod_proxy.html.fr.utf8') diff --git a/docs/manual/mod/mod_proxy.html.fr.utf8 b/docs/manual/mod/mod_proxy.html.fr.utf8 new file mode 100644 index 0000000..ad4f103 --- /dev/null +++ b/docs/manual/mod/mod_proxy.html.fr.utf8 @@ -0,0 +1,2472 @@ + + + + + +mod_proxy - Serveur HTTP Apache Version 2.4 + + + + + + + + +
<-
+ +
+

Module Apache mod_proxy

+
+

Langues Disponibles:  en  | + fr  | + ja 

+
+ + + +
Description:Serveur mandataire/passerelle multi-protocole
Statut:Extension
Identificateur de Module:proxy_module
Fichier Source:mod_proxy.c
+

Sommaire

+ +

Avertissement

+

N'activez pas la fonctionnalité de mandataire avec la directive + ProxyRequests avant + d'avoir sécurisé votre serveur. Les serveurs + mandataires ouverts sont dangereux pour votre réseau, + mais aussi pour l'Internet au sens large.

+
+ +

mod_proxy et ses modules associés implémentent + un mandataire/passerelle pour le serveur HTTP Apache, et supportent + de nombreux protocoles courants, ainsi que plusieurs algorithmes de + répartition de charge. Le support de protocoles et d'algorithmes de + répartition de charge supplémentaires peut être assuré par des + modules tiers.

+ +

Un jeu de modules chargés dans le serveur permet de fournir les + fonctionnalités souhaitées. Ces modules peuvent être inclus + statiquement à la compilation, ou dynamiquement via la directive + LoadModule. Ce jeu de module + doit comporter :

+ + + +

En outre, d'autres modules fournissent des fonctionnalités + étendues. mod_cache et ses modules associés + fournissent la mise en cache. Les directives SSLProxy* + du module mod_ssl permettent de contacter des + serveurs distants en utilisant le protocole SSL/TLS. Ces modules + additionnels devront être chargés et configurés pour pouvoir + disposer de ces fonctionnalités.

+
+ +
top
+
+

Mandataires directs et + mandataires/passerelles inverses

+

Le serveur HTTP Apache peut être configuré dans les deux modes mandataire + direct et mandataire inverse (aussi nommé + mode passerelle).

+ +

Un mandataire direct standard est un serveur + intermédiaire qui s'intercale entre le client et le serveur + demandé. Pour obtenir un contenu hébergé par + le serveur demandé, le client envoie une requête au + mandataire en nommant le serveur demandé comme + cible. Le mandataire extrait alors le contenu depuis le + serveur demandé et le renvoie enfin au client. Le client doit être + configuré de manière appropriée pour pouvoir utiliser le mandataire + direct afin d'accéder à d'autres sites.

+ +

L'accès à Internet depuis des clients situés derrière un + pare-feu est une utilisation typique du mandataire direct. Le + mandataire direct peut aussi utiliser la mise en cache (fournie + par mod_cache) pour réduire la charge du + réseau.

+ +

La fonctionnalité de mandataire direct est activée via la + directive ProxyRequests. + Comme les mandataires directs permettent aux clients d'accéder à + des sites quelconques via votre serveur et de dissimuler leur + véritable origine, il est indispensable de sécuriser votre serveur de façon à ce que seuls + les clients autorisés puissent accéder à votre serveur avant + d'activer la fonctionnalité de mandataire direct.

+ +

Un mandataire inverse (ou passerelle), + quant à lui, apparaît au client comme un serveur web standard. + Aucune configuration particulière du client n'est nécessaire. Le + client adresse ses demandes de contenus ordinaires dans l'espace + de nommage du mandataire inverse. Ce dernier décide alors où + envoyer ces requêtes, et renvoie le contenu au client comme s'il + l'hébergeait lui-même.

+ +

L'accès d'utilisateurs depuis Internet vers un serveur situé + derrière un pare-feu est une utilisation typique du mandataire + inverse. On peut aussi utiliser les mandataires inverses pour + mettre en oeuvre une répartition de charge entre plusieurs + serveurs en arrière-plan, ou fournir un cache pour un serveur + d'arrière-plan plus lent. Les mandataires inverses peuvent aussi + tout simplement servir à rassembler plusieurs serveurs dans le + même espace de nommage d'URLs.

+ +

La fonctionnalité de mandataire inverse est activée via la + directive ProxyPass ou + le drapeau [P] de la directive RewriteRule. Il n'est + pas nécessaire de définir ProxyRequests pour configurer + un mandataire inverse.

+
top
+
+

Exemples simples

+ +

Les exemples ci-dessous illustrent de manière très basique la + mise en oeuvre de la fonctionnalité de mandataire et ne sont là que + pour vous aider à démarrer. Reportez-vous à la documentation de + chaque directive.

+ +

Si en outre, vous désirez activer la mise en cache, consultez la + documentation de mod_cache.

+ +

Mandataire inverse

ProxyPass "/foo" "http://foo.example.com/bar"
+ProxyPassReverse "/foo" "http://foo.example.com/bar"
+
+ +

Mandataire direct

ProxyRequests On
+ProxyVia On
+
+<Proxy "*">
+  Require host internal.example.com
+</Proxy>
+
+

Promotion de protocole + vers Websocket (versions 2.4.47 et ultérieures)

ProxyPass "/some/ws/capable/path/" "http://example.com/some/ws/capable/path/" upgrade=websocket
+
+
top
+
+

Accès via un gestionnaire

+ +

Vous pouvez aussi forcer le traitement d'une requête en tant que + requête de mandataire inverse en créant un gestionnaire de transfert + approprié. Dans l'exemple suivant, toutes les requêtes pour + des scripts PHP seront transmises au serveur FastCGI + spécifié via un mandat inverse : +

+ +

Scripts PHP et mandataire inverse

<FilesMatch "\.php$">
+    # Les sockets Unix nécessitent une version 2.4.7 ou supérieure du
+    # serveur HTTP Apache
+    SetHandler  "proxy:unix:/path/to/app.sock|fcgi://localhost/"
+</FilesMatch>
+
+ +

Cette fonctionnalité est disponible à partir de la version + 2.4.10 du serveur HTTP Apache.

+ +
top
+
+

Workers

+

Le mandataire gère la configuration et les paramètres de + communication des serveurs originaux au sein d'objets nommés + workers. Deux types de worker sont fournis : le worker + par défaut du mandataire direct et le worker par défaut du + mandataire inverse. Il est aussi possible de définir explicitement + des workers supplémentaires.

+ +

Les deux workers par défaut possèdent une configuration figée + et seront utilisés si aucun autre worker ne correspond à la + requête. Ils ne réutilisent pas les connexions et n'utilisent pas les + connexions HTTP persistantes (Keep-Alive). En effet, les + connexions TCP vers le serveur original sont fermées et ouvertes + pour chaque requête.

+ +

Les workers définis explicitement sont identifiés par leur URL. + Ils sont en général définis via les directives ProxyPass ou ProxyPassMatch lorsqu'on les + utilise dans le cadre d'un mandataire inverse :

+ +
ProxyPass "/example" "http://backend.example.com" connectiontimeout=5 timeout=30
+
+ + +

Cette directive va créer un worker associé à l'URL du serveur + original http://backend.example.com qui utilisera les + valeurs de timeout données. Lorsqu'ils sont utilisés dans le cadre + d'un mandataire direct, les workers sont en général définis via la + directive ProxySet,

+ +
ProxySet "http://backend.example.com" connectiontimeout=5 timeout=30
+
+ + +

ou encore via les directives Proxy et ProxySet :

+ +
<Proxy "http://backend.example.com">
+  ProxySet connectiontimeout=5 timeout=30
+</Proxy>
+ + +

L'utilisation de workers définis explicitement dans le mode + mandataire direct n'est pas très courante, car les mandataires + directs communiquent en général avec de nombreux serveurs + originaux. La création explicite de workers pour certains serveurs + originaux peut cependant s'avérer utile si ces serveurs sont + très souvent sollicités. A leur niveau, les workers explicitement + définis ne possèdent aucune notion de mandataire direct ou + inverse. Ils encapsulent un concept de communication commun avec + les serveurs originaux. Un worker créé via la directive ProxyPass pour être utilisé dans le + cadre d'un mandataire inverse sera aussi utilisé dans le cadre + d'un mandataire directe chaque fois que l'URL vers le serveur + original correspondra à l'URL du worker, et vice versa.

+ +

L'URL qui identifie un worker correspond à l'URL de son serveur + original, y compris un éventuel chemin donné :

+ +
ProxyPass "/examples" "http://backend.example.com/examples"
+ProxyPass "/docs" "http://backend.example.com/docs"
+ + +

Dans cet exemple, deux workers différents sont définis, chacun + d'eux utilisant des configurations et jeux de connexions + séparés.

+ +

Partage de workers

+

Le partage de workers intervient lorsque les URLs des workers + s'entrecoupent, ce qui arrive lorsque l'URL d'un worker + correspond au début de l'URL d'un autre worker défini plus loin + dans le fichier de configuration. Dans l'exemple suivant,

+ +
ProxyPass "/apps" "http://backend.example.com/" timeout=60
+ProxyPass "/examples" "http://backend.example.com/examples" timeout=10
+ + +

le second worker n'est pas vraiment créé. C'est le premier + worker qui est en fait utilisé. L'avantage de ceci réside dans + le fait qu'il n'existe qu'un seul jeu de connexions, ces + dernières étant donc réutilisées plus souvent. Notez que tous + les attributs de configuration définis explicitement pour le + deuxième worker seront ignorés, ce qui sera journalisé en tant + qu'avertissement. Ainsi, dans l'exemple ci-dessus, la valeur de + timeout retenue pour l'URL /exemples sera + 60, et non 10 !

+ +

Si vous voulez empêcher le partage de workers, classez vos + définitions de workers selon la longueur des URLs, de la plus + longue à la plus courte. Si au contraire vous voulez favoriser + ce partage, utilisez l'ordre de classement inverse. Voir aussi + l'avertissement à propos de l'ordre de classement des directives + ProxyPass.

+ +
+ +

Les workers définis explicitement sont de deux sortes : + workers directs et workers de répartition (de + charge). Ils supportent de nombreux attributs de + configuration importants décrits dans la directive ProxyPass. Ces mêmes attributs + peuvent aussi être définis via la directive ProxySet.

+ +

Le jeu d'options disponibles pour un worker direct dépend du + protocole spécifié dans l'URL du serveur original. Les protocoles + disponibles comprennent ajp, fcgi, + ftp, http et scgi.

+ +

Les workers de répartition sont des workers virtuels qui + utilisent les workers directs, connus comme faisant partie de leurs + membres, pour le traitement effectif des requêtes. Chaque + répartiteur peut comporter plusieurs membres. Lorsqu'il traite une + requête, il choisit un de ses membres en fonction de l'algorithme + de répartition de charge défini.

+ +

Un worker de répartition est créé si son URL de worker comporte + balancer comme indicateur de protocole. L'URL du + répartiteur permet d'identifier de manière unique le worker de + répartition. La directive BalancerMember permet d'ajouter des + membres au répartiteur.

+ +

Résolution DNS pour les domaines originaux

+

La résolution DNS s'effectue lorsque le socket vers le + domaine original est créé pour la première fois. Lorsque la réutilisation + des connexions est activée, chaque domaine d'arrière-plan n'est résolu qu'une + seule fois pour chaque processus enfant, et cette résolution est mise en + cache pour toutes les connexions ultérieures jusqu'à ce que le processus enfant + soit recyclé. Ce comportement doit être pris en considération lorsqu'on + planifie des tâches de maintenance du DNS impactant les domaines + d'arrière-plan. Veuillez aussi vous reporter aux paramètres de la + directive ProxyPass pour plus de + détails à propos de la réutilisation des connexions.

+
+ +
top
+
+

Contrôler l'accès à votre + mandataire

+

Vous pouvez restreindre l'accès à votre mandataire via le bloc + de contrôle <Proxy> comme dans + l'exemple suivant :

+ +
<Proxy "*">
+  Require ip 192.168.0
+</Proxy>
+ + +

Pour plus de détails sur les directives de contrôle d'accès, + voir la documentation du module + mod_authz_host.

+ +

Restreindre l'accès de manière stricte est essentiel si vous + mettez en oeuvre un mandataire direct (en définissant la directive + ProxyRequests à "on"). + Dans le cas contraire, votre serveur pourrait être utilisé par + n'importe quel client pour accéder à des serveurs quelconques, + tout en masquant sa véritable identité. Ceci représente un danger + non seulement pour votre réseau, mais aussi pour l'Internet au + sens large. Dans le cas de la mise en oeuvre d'un mandataire + inverse (en utilisant la directive ProxyPass avec ProxyRequests Off), le contrôle + d'accès est moins critique car les clients ne peuvent contacter + que les serveurs que vous avez spécifiés.

+ +

Voir aussi la variable d'environnement Proxy-Chain-Auth.

+ +
top
+
+

Ralentissement au démarrage

+

Si vous utilisez la directive ProxyBlock, les noms d'hôtes sont résolus en adresses + IP puis ces dernières mises en cache au cours du démarrage + à des fins de tests de comparaisons ultérieurs. Ce processus peut + durer plusieurs secondes (ou d'avantage) en fonction de la vitesse + à laquelle s'effectue la résolution des noms d'hôtes.

+
top
+
+

Mandataire en Intranet

+

Un serveur mandataire Apache httpd situé à l'intérieur d'un Intranet + doit faire suivre les requêtes destinées à un serveur externe à + travers le pare-feu de l'entreprise (pour ce faire, définissez la + directive ProxyRemote de + façon à ce qu'elle fasse suivre le protocole concerné + vers le mandataire du pare-feu). Cependant, lorsqu'il doit accéder + à des ressources situées dans l'Intranet, il peut se passer du + pare-feu pour accéder aux serveurs. A cet effet, la directive + NoProxy permet de + spécifier quels hôtes appartiennent à l'Intranet et peuvent donc + être accédés directement.

+ +

Les utilisateurs d'un Intranet ont tendance à oublier le nom du + domaine local dans leurs requêtes WWW, et demandent par exemple + "http://un-serveur/" au lieu de + http://un-serveur.example.com/. Certains serveurs + mandataires commerciaux acceptent ce genre de requête et les + traitent simplement en utilisant un nom de domaine local + implicite. Lorsque la directive ProxyDomain est utilisée et si le + serveur est configuré comme + mandataire, Apache httpd peut renvoyer une réponse de redirection et + ainsi fournir au client l'adresse de serveur correcte, + entièrement qualifiée. C'est la méthode à privilégier car le + fichier des marque-pages de l'utilisateur contiendra alors des + noms de serveurs entièrement qualifiés.

+
top
+
+

Ajustements relatifs au + protocole

+

Pour les cas où mod_proxy envoie des requêtes + vers un serveur qui n'implémente pas correctement les connexions + persistantes ou le protocole HTTP/1.1, il existe deux variables + d'environnement qui permettent de forcer les requêtes à utiliser + le protocole HTTP/1.0 avec connexions non persistantes. Elles + peuvent être définies via la directive SetEnv.

+ +

Il s'agit des variables force-proxy-request-1.0 et + proxy-nokeepalive.

+ +
<Location "/buggyappserver/">
+  ProxyPass "http://buggyappserver:7001/foo/"
+  SetEnv force-proxy-request-1.0 1
+  SetEnv proxy-nokeepalive 1
+</Location>
+ + +

A partir de la version 2.4.26 du serveur HTTP Apache, la définition de + la variable d'environnement "no-proxy" permet de désactiver + mod_proxy dans le traitement de la requête courante. + Cette variable doit être définie via la directive SetEnvIf car la directive SetEnv n'est pas évaluée assez tôt.

+ +
top
+
+

Corps de requêtes

+ +

Certaines méthodes de requêtes comme POST comportent un corps de + requête. Le protocole HTTP stipule que les requêtes qui comportent + un corps doivent soit utiliser un codage de transmission + fractionnée (chunked transfer encoding), soit envoyer un en-tête de requête + Content-Length. Lorsqu'il fait suivre ce genre de + requête vers le serveur demandé, mod_proxy_http + s'efforce toujours d'envoyer l'en-tête Content-Length. + Par contre, si la taille du corps est importante, et si la requête + originale utilise un codage à fractionnement, ce dernier peut aussi + être utilisé dans la requête montante. Ce comportement peut être + contrôlé à l'aide de variables + d'environnement. Ainsi, si elle est définie, la variable + proxy-sendcl assure une compatibilité maximale avec les + serveurs demandés en imposant l'envoi de l'en-tête + Content-Length, alors que + proxy-sendchunked diminue la consommation de ressources + en imposant l'utilisation d'un codage à fractionnement.

+ +

Dans certaines circonstances, le serveur doit mettre en file + d'attente sur disque les corps de requêtes afin de satisfaire le + traitement demandé des corps de requêtes. Par exemple, cette mise en + file d'attente se produira si le corps original a été envoyé selon un + codage morcelé (et possède une taille importante), alors que + l'administrateur a demandé que les requêtes du serveur + d'arrière-plan soient envoyées avec l'en-tête Content-Length ou en + HTTP/1.0. Cette mise en file d'attente se produira aussi si le corps + de la requête contient déjà un en-tête Content-Length, alors que le + serveur est configuré pour filtrer les corps des requêtes entrantes.

+ +
top
+
+

En-têtes de requête du mandataire + inverse

+ +

Lorsqu'il est configuré en mode mandataire inverse (en utilisant + par exemple la directive ProxyPass), + mod_proxy_http ajoute plusieurs en-têtes de requête + afin de transmettre des informations au serveur demandé. Ces + en-têtes sont les suivants :

+ +
+
X-Forwarded-For
+
L'adresse IP du client.
+
X-Forwarded-Host
+
L'hôte d'origine demandé par le client dans l'en-tête de + requête HTTP Host.
+
X-Forwarded-Server
+
Le nom d'hôte du serveur mandataire.
+
+ +

Ces en-têtes doivent être utilisés avec précautions sur le + serveur demandé, car ils contiendront plus d'une valeur (séparées + par des virgules) si la requête originale contenait déjà un de ces + en-têtes. Par exemple, vous pouvez utiliser + %{X-Forwarded-For}i dans la chaîne de format du journal + du serveur demandé pour enregistrer les adresses IP des clients + originaux, mais il est possible que vous obteniez plusieurs adresses + si la requête passe à travers plusieurs mandataires.

+ +

Voir aussi les directives ProxyPreserveHost et ProxyVia directives, qui permettent + de contrôler d'autres en-têtes de requête.

+ +

Note : Si vous devez ajouter des en-têtes particuliers à la + requête mandatée, utilisez la directive RequestHeader.

+ +
+
top
+

Directive BalancerGrowth

+ + + + + + + + +
Description:Nombre de membres supplémentaires pouvant être ajoutés +après la configuration initiale
Syntaxe:BalancerGrowth #
Défaut:BalancerGrowth 5
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
Compatibilité:BalancerGrowth est disponible depuis la version 2.3.13 du +serveur HTTP Apache
+

Cette directive permet de définir le nombre de membres pouvant + être ajoutés au groupe de répartition de charge préconfiguré d'un + serveur virtuel. Elle n'est active que si le groupe a été + préconfiguré avec un membre au minimum.

+ +
+
top
+

Directive BalancerInherit

+ + + + + + + + +
Description:Héritage des membres du groupes de répartition de + charge du mandataire définis au niveau du serveur principal
Syntaxe:BalancerInherit On|Off
Défaut:BalancerInherit On
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
Compatibilité:Disponible à partir de la version 2.4.5 du serveur + HTTP Apache.
+

Cette directive permet d'attribuer au serveur virtuel courant + l'héritage des membres de groupes de répartition de charge + définis au niveau du serveur + principal. Elle ne doit pas être activée si vous + utilisez la fonctionnalité de modifications dynamiques du + gestionnaire de répartition de charge (Balancer Manager) pour + éviter des problèmes et des comportements inattendus.

+

Les définitions au niveau du serveur principal constituent + les définitions par défaut au niveau des serveurs virtuels.

+ + +
+
top
+

Directive BalancerMember

+ + + + + + + +
Description:Ajoute un membre à un groupe de répartition de +charge
Syntaxe:BalancerMember [balancerurl] url [clé=valeur [clé=valeur ...]]
Contexte:répertoire
Statut:Extension
Module:mod_proxy
Compatibilité:Disponible depuis la version 2.2 du serveur HTTP Apache.
+

Cette directive permet d'ajouter un membre à un groupe de + répartition de charge. Elle peut se trouver dans un conteneur + <Proxy balancer://...>, et accepte + tous les paramètres de paires clé/valeur que supporte la directive + ProxyPass.

+

La directive BalancerMember accepte un paramètre + supplémentaire : loadfactor. Il s'agit du facteur de + charge du membre - un nombre décimal entre 1.0 (valeur par défaut) et 100.0, qui + définit la charge à appliquer au membre en question.

+

L'argument balancerurl n'est requis que s'il ne se trouve pas + dèjà dans la directive de conteneur <Proxy + balancer://...>. Il correspond à l'URL d'un + répartiteur de charge défini par une directive ProxyPass.

+

La partie chemin de l'URL du répartiteur dans toute directive de + conteneur <Proxy balancer://...> est + ignorée.

+

En particulier, le slash de fin de l'URL d'un + BalancerMember doit être supprimé.

+ +
+
top
+

Directive BalancerPersist

+ + + + + + + + +
Description:Tente de conserver les changements effectués par le + gestionnaire de répartition de charge après un redémarrage du + serveur.
Syntaxe:BalancerPersist On|Off
Défaut:BalancerPersist Off
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
Compatibilité:BalancerPersist n'est disponible qu'à partir de la + version 2.4.4 du serveur HTTP Apache.
+

Cette directive permet de conserver le contenu de l'espace + mémoire partagé associé aux répartiteurs de charge et à leurs + membres après un redémarrage du serveur. Ces modifications + locales ne sont ainsi pas perdues lors des transitions d'état + dues à un redémarrage.

+ +
+
top
+

Directive NoProxy

+ + + + + + +
Description:Serveurs, domaines ou réseaux auquels on se connectera +directement
Syntaxe:NoProxy domaine [domaine] ...
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
+

Cette directive n'a d'utilité que pour les serveurs mandataires + Apache httpd au sein d'Intranets. La directive + NoProxy permet de spécifier une liste de + sous-réseaux, d'adresses IP, de serveurs et/ou de domaines séparés + par des espaces. Une requête pour un serveur qui correspond à un ou + plusieurs critères sera toujours servie par ce serveur directement, + sans être redirigée vers le(s) serveur(s) mandataire(s) défini(s) par + la directive ProxyRemote.

+ +

Exemple

ProxyRemote  "*"  "http://firewall.example.com:81"
+NoProxy         ".example.com" "192.168.112.0/21"
+
+ +

Le type des arguments serveur de la directive + NoProxy appartiennent à la liste suivante + :

+ +
+ +
Domaine
+
+

Un domaine est ici un nom de domaine DNS partiellement + qualifié précédé d'un point. Il représente une liste de serveurs qui + appartiennent logiquement au même domaine ou à la même zonz DNS + (en d'autres termes, les nom des serveurs se terminent tous par + domaine).

+ +

Exemple

+ .com .example.org. +

+ +

Pour faire la distinction entre domaines et nom d'hôtes (des points de vue à la fois + syntaxique et + sémantique, un domaine DNS pouvant aussi avoir un enregistrement DNS + de type A !), les domaines sont toujours spécifiés en les + préfixant par un point.

+ +

Note

+

Les comparaisons de noms de domaines s'effectuent sans tenir + compte de la casse, et les parties droites des Domaines + sont toujours censées correspondre à la racine de l'arborescence + DNS, si bien que les domaines .ExEmple.com et + .exemple.com. (notez le point à la fin du nom) sont + considérés comme identiques. Comme une comparaison de domaines ne + nécessite pas de recherche DNS, elle est beaucoup plus efficace + qu'une comparaison de sous-réseaux.

+
+ + +
Sous-réseau
+
+

Un Sous-réseau est une adresse internet partiellement + qualifiée sous forme numérique (quatre nombres séparés par des + points), optionnellement suivie d'un slash et du masque de + sous-réseau spécifiant le nombre de bits significatifs dans le + Sous-réseau. Il représente un sous-réseau de serveurs qui + peuvent être atteints depuis la même interface réseau. En l'absence + de masque de sous-réseau explicite, il est sous-entendu que les + digits manquants (ou caractères 0) de fin spécifient le masque de + sous-réseau (Dans ce cas, le masque de sous-réseau ne peut être + qu'un multiple de 8). Voici quelques exemples :

+ +
+
192.168 ou 192.168.0.0
+
le sous-réseau 192.168.0.0 avec un masque de sous-réseau + implicite de 16 bits significatifs (parfois exprimé sous la forme + 255.255.0.0)
+
192.168.112.0/21
+
le sous-réseau 192.168.112.0/21 avec un masque de + sous-réseau implicite de 21 bits significatifs (parfois exprimé + sous la forme255.255.248.0)
+
+ +

Comme cas extrêmes, un Sous-réseau avec un masque de + sous-réseau de 32 bits significatifs est équivalent à une adresse IP, alors qu'un Sous-réseau avec un masque de + sous-réseau de 0 bit significatif (c'est à dire 0.0.0.0/0) est + identique à la constante _Default_, et peut correspondre + à toute adresse IP.

+ + +
Adresse IP
+
+

Une Adresse IP est une adresse internet pleinement + qualifiée sous forme numérique (quatre nombres séparés par des + points). En général, cette adresse représente un serveur, mais elle + ne doit pas nécessairement correspondre à un nom de domaine DNS.

+

Exemple

+ 192.168.123.7 +

+ +

Note

+

Une Adresse IP ne nécessite pas de résolution DNS, + et peut ainsi s'avérer plus efficace quant aux performances + d'Apache.

+
+ + +
Nom de serveur
+
+

Un Nom de serveur est un nom de domaine DNS pleinement + qualifié qui peut être résolu en une ou plusieurs adresses IP par le + service de noms de domaines DNS. Il représente un hôte logique (par + opposition aux Domaines, voir + ci-dessus), et doit pouvoir être résolu en une ou plusieurs adresses IP (ou souvent en une liste + d'hôtes avec différentes adresses + IP).

+ +

Exemples

+ prep.ai.example.edu
+ www.example.org +

+ +

Note

+

Dans de nombreuses situations, il est plus efficace de + spécifier une adresse IP qu'un + Nom de serveur car cela évite d'avoir à effectuer une + recherche DNS. La résolution de nom dans Apache httpd peut prendre un + temps très long lorsque la connexion avec le serveur de noms + utilise une liaison PPP lente.

+

Les comparaisons de Nom de serveur s'effectuent sans tenir + compte de la casse, et les parties droites des Noms de serveur + sont toujours censées correspondre à la racine de l'arborescence + DNS, si bien que les domaines WWW.ExEmple.com et + www.example.com. (notez le point à la fin du nom) sont + considérés comme identiques.

+
+
+ +

Voir aussi

+ +
+
top
+

Directive <Proxy>

+ + + + + + +
Description:Conteneur de directives s'appliquant à des ressources +mandatées
Syntaxe:<Proxy url-avec-jokers> ...</Proxy>
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
+

Les directives situées dans une section <Proxy> ne s'appliquent qu'au contenu + mandaté concerné. Les jokers de style shell sont autorisés.

+ +

Par exemple, les lignes suivantes n'autoriseront à accéder à un + contenu via votre serveur mandataire que les hôtes appartenant à + votre-reseau.example.com :

+ +
<Proxy "*">
+  Require host votre-reseau.example.com
+</Proxy>
+ + +

Dans l'exemple suivant, tous les fichiers du répertoire + foo de example.com seront traités par le + filtre INCLUDES lorsqu'ils seront envoyés par + l'intermédiaire du serveur mandataire :

+ +
<Proxy "http://example.com/foo/*">
+  SetOutputFilter INCLUDES
+</Proxy>
+ + +

Différences avec la section de configuration Location

+

Une URL d'arrière-plan sera concernée par le conteneur Proxy si + elle commence par la url-avec-jokers, même si le + dernier segment de chemin de la directive ne correspond qu'à un + préfixe de segment dee chemin de l'URL d'arrière-plan. Par exemple, <Proxy + "http://example.com/foo"> correspondra entre autres aux URLs + http://example.com/foo, http://example.com/foo/bar, et + http://example.com/foobar. La correspondance de l'URL finale + diffère du comportement de la section <Location> qui, pour le cas de cette note, + traitera le segment de chemin final comme s'il se terminait par un + slash.

+

Pour un contrôle plus fin de la correspondance des URL, voir la + directive <ProxyMatch>.

+
+ + +

Voir aussi

+ +
+
top
+

Directive Proxy100Continue

+ + + + + + + + +
Description:Transmission du message "100-continue" au serveur d'origine
Syntaxe:Proxy100Continue Off|On
Défaut:Proxy100Continue On
Contexte:configuration globale, serveur virtuel, répertoire
Statut:Extension
Module:mod_proxy
Compatibilité:Disponible à partir de la version 2.4.40 du serveur HTTP Apache
+

Cette directive permet de contrôler le transfert par le mandataire du + message "100-continue" (Expect:ation) vers le serveur d'origine. Si + elle est définie à "On", le serveur d'origine décidera lui-même si le corps + de la requête HTTP doit être lu. Si elle est définie à "Off", le mandataire + générera lui-même une réponse intermédiaire 100 Continue avant de + transférer le corps de la requête.

+

Contexte d'utilisation

+

Cette option n'est utilisable qu'avec les mandataires HTTP gérés par + mod_proxy_http.

+
+ +
+
top
+

Directive ProxyAddHeaders

+ + + + + + + + +
Description:Ajoute des informations à propos du mandataire aux +en-têtes X-Forwarded-*
Syntaxe:ProxyAddHeaders Off|On
Défaut:ProxyAddHeaders On
Contexte:configuration globale, serveur virtuel, répertoire
Statut:Extension
Module:mod_proxy
Compatibilité:Disponible depuis la version 2.3.10
+

Cette directive permet de passer au serveur d'arrière-plan des + informations à propos du mandataire via les en-têtes HTTP + X-Forwarded-For, X-Forwarded-Host et X-Forwarded-Server.

+

Utilité

+

Cette option n'est utile que dans le cas du mandat HTTP traité + par mod_proxy_http.

+
+ +
+
top
+

Directive ProxyBadHeader

+ + + + + + + +
Description:Détermine la manière de traiter les lignes d'en-tête +incorrectes d'une réponse
Syntaxe:ProxyBadHeader IsError|Ignore|StartBody
Défaut:ProxyBadHeader IsError
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
+

La directive ProxyBadHeader permet de + déterminer le comportement de mod_proxy lorsqu'il + reçoit des lignes d'en-tête de réponse dont la syntaxe n'est pas valide (c'est + à dire ne contenant pas de caractère ':') en provenance du serveur + original. Les arguments disponibles sont :

+ +
+
IsError
+
Annule la requête et renvoie une réponse de code 502 (mauvaise + passerelle). C'est le comportement par défaut.
+ +
Ignore
+
Traite les lignes d'en-tête incorrectes comme si elles n'avaient + pas été envoyées.
+ +
StartBody
+
A la réception de la première ligne d'en-tête incorrecte, les + autres en-têtes sont lus et ce qui reste est traité en tant que + corps. Ceci facilite la prise en compte des serveurs d'arrière-plan + bogués qui oublient d'insérer une ligne vide entre les + en-têtes et le corps.
+
+ +
+
top
+

Directive ProxyBlock

+ + + + + + +
Description:Termes, serveurs ou domaines bloqués par le +mandataire
Syntaxe:ProxyBlock *|terme|serveur|domaine +[terme|serveur|domaine] ...
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
+

La directive ProxyBlock permet de + spécifier une liste de termes, serveurs et/ou domaines, séparés par + des espaces. Les requêtes de documents HTTP, HTTPS, FTP vers des + sites dont les noms contiennent des termes, noms de serveur ou + domaine correspondants seront bloqués par le serveur + mandataire. La module proxy va aussi tenter de déterminer les + adresses IP des éléments de la liste qui peuvent correspondre à des + noms d'hôtes au cours du démarrage, et les mettra en cache à des + fins de comparaisons ultérieures. Ceci peut ralentir le démarrage du + serveur.

+ +

Exemple

ProxyBlock "news.example.com" "auctions.example.com" "friends.example.com"
+
+ +

Notez qu'example suffirait aussi pour atteindre + ces sites.

+ +

Hosts conviendrait aussi s'il était référencé par adresse IP.

+ +

Notez aussi que

+ +
ProxyBlock "*"
+ + +

bloque les connexions vers tous les sites.

+ +
+
top
+

Directive ProxyDomain

+ + + + + + +
Description:Nom de domaine par défaut pour les requêtes +mandatées
Syntaxe:ProxyDomain Domaine
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
+

Cette directive n'a d'utilité que pour les serveurs mandataires + Apache httpd au sein d'un Intranet. La directive + ProxyDomain permet de spécifier le domaine + par défaut auquel le serveur mandataire apache appartient. Si le + serveur reçoit une requête pour un hôte sans nom de domaine, il va + générer une réponse de redirection vers le même hôte suffixé par le + Domaine spécifié.

+ +

Exemple

ProxyRemote  "*"  "http://firewall.example.com:81"
+NoProxy         ".example.com" "192.168.112.0/21"
+ProxyDomain     ".example.com"
+
+ +
+
top
+

Directive ProxyErrorOverride

+ + + + + + + + +
Description:Outrepasser les pages d'erreur pour les contenus +mandatés
Syntaxe:ProxyErrorOverride Off|On [code ...]
Défaut:ProxyErrorOverride Off
Contexte:configuration globale, serveur virtuel, répertoire
Statut:Extension
Module:mod_proxy
Compatibilité:La liste de codes d'états a été ajoutée à partir de la version +2.4.47 du serveur HTTP Apache.
+

Cette directive est utile pour les configurations de mandataires + inverses, lorsque vous souhaitez que les pages d'erreur envoyées + aux utilisateurs finaux présentent un aspect homogène. Elle permet + aussi l'inclusion de fichiers (via les SSI de + mod_include) pour obtenir le code d'erreur et agir + en conséquence (le comportement par défaut afficherait la page + d'erreur du serveur mandaté, alors que c'est le message d'erreur SSI + qui sera affiché si cette directive est à "on").

+ +

Cette directive n'affecte pas le traitement des réponses + informatives (1xx), de type succès normal (2xx), ou de redirection + (3xx).

+ +

Par défaut, ProxyErrorOverride affecte toutes les + réponses avec un code compris entre 400 inclus et 600 exclus.

+ +

Exemple de configuration par défaut

ProxyErrorOverride  On
+
+ +

Pour n'affecter que les réponses possèdant certains codes d'état + particuliers, vous pouvez spécifier ces derniers sous la forme d'une liste + en les séparant par des espaces. Les réponses dont le code d'état ne fait + pas partie de la liste ne seront pas affectées. Vous ne pouvez spécifier que + des codes d'erreurs, donc compris entre 400 inclus et 600 exclus.

+ +

Exemple de configuration personnalisée

ProxyErrorOverride  On 403 405 500 501 502 503 504
+
+ +
+
top
+

Directive ProxyIOBufferSize

+ + + + + + + +
Description:Détermine la taille du tampon interne de transfert de +données
Syntaxe:ProxyIOBufferSize octets
Défaut:ProxyIOBufferSize 8192
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
+

La directive ProxyIOBufferSize permet + d'ajuster la taille du tampon interne utilisé comme bloc-note pour + les transferts de données entre entrée et sortie. La taille minimale + est de 512 octets.

+ +

Dans la plupart des cas, il n'y a aucune raison de modifier cette + valeur.

+ +

Si elle est utilisée avec AJP, cette directive permet de définir + la taille maximale du paquet AJP en octets. Si la valeur spécifiée + est supérieure à 65536, elle est corrigée et prend la valeur 65536. + Si vous ne conservez pas + la valeur par défaut, vous devez aussi modifier l'attribut + packetSize de votre connecteur AJP du côté de Tomcat ! + L'attribut packetSize n'est disponible que dans Tomcat + 5.5.20+ et 6.0.2+.

+

Il n'est normalement pas nécessaire de modifier la taille + maximale du paquet. Des problèmes ont cependant été rapportés avec + la valeur par défaut lors de l'envoi de certificats ou de chaînes de + certificats.

+ + +
+
top
+

Directive <ProxyMatch>

+ + + + + + +
Description:Conteneur de directives s'appliquant à des ressources +mandatées correspondant à une expression rationnelle
Syntaxe:<ProxyMatch regex> ...</ProxyMatch>
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
+

La directive <ProxyMatch> est + identique à la directive <Proxy>, à l'exception qu'elle définit + les URLs auxquelles elle s'applique en utilisant une expression rationnelle.

+ +

A partir de la version 2.4.8, les groupes nommés et les + références arrières sont extraits et enregistrés dans + l'environnement avec leur nom en majuscules et préfixé par "MATCH_". Ceci permet + de référencer des URLs dans des expressions + ou au sein de modules comme mod_rewrite. Pour + éviter toute confusion, les références arrières numérotées (non + nommées) sont ignorées. Vous devez utiliser à la place des groupes + nommés.

+ +
<ProxyMatch "^http://(?<sitename>[^/]+)">
+    Require ldap-group cn=%{env:MATCH_SITENAME},ou=combined,o=Example
+</ProxyMatch>
+ + +

Voir aussi

+ +
+
top
+

Directive ProxyMaxForwards

+ + + + + + + + +
Description:Nombre maximum de mandataires à travers lesquelles une +requête peut être redirigée
Syntaxe:ProxyMaxForwards nombre
Défaut:ProxyMaxForwards -1
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
Compatibilité:Comportement par défaut +modifié dans 2.2.7
+

La directive ProxyMaxForwards permet de + spécifier le nombre maximum de mandataires à travers lesquels une + requête peut passer dans le cas où la la requête ne contient pas + d'en-tête Max-Forwards. Ceci permet de se prémunir + contre les boucles infinies de mandataires ou contre les attaques de + type déni de service.

+ +

Exemple

ProxyMaxForwards 15
+
+ +

Notez que la définition de la directive + ProxyMaxForwards constitue une violation du + protocole HTTP/1.1 (RFC2616), qui interdit à un mandataire de + définir Max-Forwards si le client ne l'a pas fait + lui-même. Les versions précédentes d'Apache httpd la définissaient + systématiquement. Une valeur négative de + ProxyMaxForwards, y compris la valeur par + défaut -1, implique un comportement compatible avec le protocole, + mais vous expose aux bouclages infinis.

+ +
+
top
+

Directive ProxyPass

+ + + + + + + +
Description:Référencer des serveurs distants depuis +l'espace d'URLs du serveur local
Syntaxe:ProxyPass [chemin] !|url [clé=valeur + [clé=valeur ...]] [nocanon] [interpolate] [noquery]
Contexte:configuration globale, serveur virtuel, répertoire
Statut:Extension
Module:mod_proxy
Compatibilité:Les sockets de style Unix (Unix Domain Socket - UDS) +sont supportés à partir de la version 2.4.7 du serveur HTTP Apache
+

Cette directive permet de référencer des serveurs distants depuis + l'espace d'URLs du serveur local. Le serveur + local n'agit pas en tant que mandataire au sens conventionnel, mais + plutôt comme miroir du serveur distant. Le serveur local est + souvent nommé mandataire inverse ou + passerelle. L'argument chemin est le nom d'un + chemin virtuel local ; url est une URL partielle pour le + serveur distant et ne doit pas contenir de chaîne d'arguments.

+ +
Il est fortement recommandé de revoir le concept de Worker avant d'aller plus loin.
+ +
Cette directive n'est pas supportée au sein des sections <Directory>, <If> et <Files>.
+ +
En général, la directive ProxyRequests doit être définie à + off lorsqu'on utilise la directive + ProxyPass.
+ +

Les sockets de style Unix sont supportés à partir de la version + 2.4.7 du serveur HTTP Apache ; pour utiliser cette fonctionnalité, + il suffit d'utiliser une URL cible préfixée par + unix:/path/lis.sock|. Par exemple, pour mandater HTTP + et cibler l'UDS /home/www.socket, vous devez utiliser + unix:/home/www.socket|http://localhost/whatever/.

+ +
Note :Le chemin associé à l'URL + unix: tient compte de la directive + DefaultRuntimeDir.
+ +

Lorsque cette directive est utilisée dans une section <Location>, le premier + argument est omis et le répertoire local est obtenu à partir de + l'argument de la directive <Location>. Il en est de même à l'intérieur + d'une section <LocationMatch>, mais le résultat ne sera + probablement pas celui attendu car ProxyPassReverse va interpréter + l'expression rationnelle littéralement comme un chemin ; si besoin + est dans ce cas, définissez la directive ProxyPassReverse en dehors + de la section, ou dans une section <Location> séparée.

+ +

Supposons que le serveur local a pour adresse + http://example.com/ ; alors la ligne

+ +
<Location "/mirror/foo/">
+    ProxyPass "http://backend.example.com/"
+</Location>
+ + +

va convertir en interne toute requête pour + http://example.com/mirror/foo/bar en une requête + mandatée pour http://backend.example.com/bar.

+ +

Si vous avez besoin d'un configuration de mandataire inverse plus + souple, reportez-vous à la documentaion de la directive RewriteRule et son drapeau + [P].

+ +

La syntaxe alternative suivante est valide, bien qu'elle puisse + induire une dégradation des performances lorsqu'elle est + présente en très grand nombre. Elle possède l'avantage de + permettre un contrôle dynamique via l'interface Balancer Manager :

+ +
ProxyPass "/mirror/foo/" "http://backend.example.com/"
+ + +
+

Si le premier argument se termine par un slash + /, il doit en être de même pour le second argument + et vice versa. Dans le cas contraire, il risque de manquer des + slashes nécessaires dans la requête résultante vers le serveur + d'arrière-plan et les résulats ne seront pas ceux attendus. +

+
+ +

Le drapeau ! permet de soustraire un sous-répertoire + du mandat inverse, comme dans l'exemple suivant :

+ +
<Location "/mirror/foo/">
+    ProxyPass "http://backend.example.com/"
+</Location>
+<Location "/mirror/foo/i">
+    ProxyPass "!"
+</Location>
+ + +
ProxyPass "/mirror/foo/i" "!"
+ProxyPass "/mirror/foo" "http://backend.example.com"
+ + +

va mandater toutes les requêtes pour /mirror/foo + vers backend.example.com, sauf les requêtes + pour /mirror/foo/i.

+ +

Mélanger plusieurs configurations ProxyPass dans différents contextes ne + fonctionne pas :

+
ProxyPass "/mirror/foo/i" "!"
+<Location "/mirror/foo/">
+    ProxyPass "http://backend.example.com/"
+</Location>
+ +

Dans ce cas, une requête pour /mirror/foo/i sera tout de + même mandatée car c'est la directive ProxyPass de la + section Location qui sera évaluée en premier. Le fait que la directive + ProxyPass supporte les deux contextes serveur + principal et répertoire ne signifie pas que sa portée et sa position dans le + fichier de configuration va garantir une quelconque priorité et/ou + chronologie de prise en compte.

+ +

Ordre de classement des directives ProxyPass

+

Les directives ProxyPass et ProxyPassMatch sont évaluées dans + l'ordre de leur apparition dans le fichier de configuration. La + première règle qui correspond s'applique. Vous devez donc en + général classer les règles ProxyPass qui entrent en conflit de + l'URL la plus longue à la plus courte. Dans le cas contraire, les + règles situées après une règle dont l'URL correspond au début de + leur propre URL seront ignorées. Notez que tout ceci est en + relation avec le partage de workers.

+ +
+

Chronologie de prise en compte des directives + ProxyPass au sein des sections Locations

+

On ne peut placer + qu'une seule directive ProxyPass dans une section + Location, et c'est la section + la plus spécifique qui l'emportera.

+
+

Exclusions et variable d'environnement no-proxy

+

Les exclusions doivent se situer avant + les directives ProxyPass générales. A partir de la + version 2.4.26 du serveur HTTP Apache, la variable + d'environnement "no-proxy" est une alternative aux exclusions et constitue + le seul moyen de configurer une exclusion pour une directive + ProxyPass dans le contexte d'une section Location. Cette variable doit être définie via + la directive SetEnvIf car la + directive SetEnv n'est pas évaluée + assez tôt.

+ +
+ +

ProxyPass clé=valeur Paramètres

+ +

Depuis la version 2.1 du serveur HTTP Apache, mod_proxy supporte + les groupements de connexions vers un serveur d'arrière-plan. Les + connexions créées à la demande peuvent être enregistrées dans un + groupement pour une utilisation ultérieure. La taille du groupe + ainsi que d'autres caractéristiques peuvent être définies via la + directive ProxyPass au moyen de paramètres + clé=valeur dont la description fait l'objet des + tableaux ci-dessous.

+ +

Nombre maximum de connexions vers + l'arrière-plan

+

Par défaut, mod_proxy permet et met en réserve le + nombre maximum de connexions pouvant être utilisées simultanément par le + processus enfant concerné du serveur web. Le paramètre max + permet de réduire cette valeur par défaut. Le jeu de connexions est maintenu + au niveau de chaque processus enfant du serveur web, max et les + autres réglages n'étant pas coordonnés entre ces différents processus, sauf + bien entendu lorsqu'un seul processus enfant n'est autorisé par la + configuration ou le MPM utilisé.

+ +

Le paramètre ttl, + quant à lui, permet de définir une durée de vie optionnelle ; les + connexions qui n'ont pas été utilisées pendant au moins + ttl secondes seront fermées. ttl permet + aussi d'empêcher l'utilisation d'une connexion susceptible d'être + fermée suite à une fin de vie de connexion persistante sur le + serveur d'arrière-plan.

+ +

Exemple

ProxyPass "/example" "http://backend.example.com" max=20 ttl=120 retry=300
+
+ +
Paramètres de worker (directive BalancerMember)
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParamètreDéfautDescription
min0Nombre minimum d'entrées dans le pool de connexions, + distinct du nombre de connexions effectif. La valeur par défaut + ne doit être modifiée que dans des circonstances particulières + où la mémoire associée aux connexions avec le serveur + d'arrière-plan doit être préallouée ou réservée dans le tas.
max1...nNombre maximum de connexions autorisées vers le serveur + d'arrière-plan. La valeur par défaut correspond au nombre de + threads par processus pour le MPM (Module Multi Processus) + actif. La valeur sera toujours 1 pour le MPM Prefork, alors + qu'elle dépendra de la définition de la directive + ThreadsPerChild pour les autres MPMs.
smaxmaxLes entrées du pool de connexions conservées au delà de + cette limite sont libérées au cours de certaines opérations si + elles n'ont pas été utilisées au cours de leur durée de vie, + définie par le paramètre ttl. Si l'entrée du pool + de connexions est associée à une connexion, cette dernière sera + fermée. La valeur par défaut ne doit être modifiée que dans des + circonstances particulières où les entrées du pool de connexions + et toutes connexions associées qui ont dépassé leur durée de vie + doivent être libérées ou fermées de manière plus autoritaire.
acquire-Cette clé permet de définir le délai maximum d'attente pour + une connexion libre dans le jeu de connexions, en millisecondes. + S'il n'y a pas de connexion libre dans le jeu, Apache httpd renverra + l'état SERVER_BUSY au client. +
connectiontimeouttimeoutDélai d'attente d'une connexion en secondes. + La durée en secondes pendant laquelle Apache httpd va attendre pour + l'établissement d'une connexion vers le serveur d'arrière-plan. + Le délai peut être spécifié en millisecondes en ajoutant le + suffixe ms. +
disablereuseOffVous pouvez utiliser cette clé pour forcer mod_proxy à + fermer immédiatement une connexion vers le serveur + d'arrière-plan après utilisation, et ainsi désactiver le jeu de + connexions permanentes vers ce serveur. Ceci peut s'avérer utile + dans des situations où un pare-feu situé entre Apache httpd et le + serveur d'arrière-plan (quelque soit le protocole) interrompt + des connexions de manière silencieuse, ou lorsque le serveur + d'arrière-plan lui-même est accessible par rotation de DNS + (round-robin DNS). Lorsque la réutilisation des connexions est activée, + chaque domaine d'arrière-plan n'est résolu (via une requête DNS) qu'une + seule fois par chaque processus enfant et mis en cache pour toutes les + connexions ultérieures jusqu'au recyclage du processus concerné. + Pour désactiver la réutilisation du jeu de + connexions, définissez cette clé à On. +
enablereuseOnCe paramètre est utilisé par les gestionnaires de protocole pour + lesquels la réutilisation des connexions est optionnelle (comme + mod_proxy_fcgi). C'est le contraire du + paramètre 'disablereuse' ci-dessus, et il est supporté par les + versions 2.4.11 et supérieures du serveur HTTP Apache. +
flushpacketsoffPermet de définir si le module mandataire doit vider + automatiquement le tampon de sortie après chaque tronçon de + données. 'off' signifie que le tampon sera vidé si + nécessaire ; + 'on' signifie que le tampon sera vidé après chaque envoi d'un + tronçon de données, et 'auto' que le tampon sera vidé après un + délai de 'flushwait' millisecondes si aucune entrée n'est reçue. + Actuellement, cette clé n'est supportée que par mod_proxy_ajp et + mod_proxy_fcgi. +
flushwait10Le délai d'attente pour une entrée additionnelle, en + millisecondes, avant le vidage du tampon en sortie dans le cas + où 'flushpackets' est à 'auto'. +
iobuffersize8192Permet de définir la taille du tampon d'entrées/sorties du + bloc-notes interne. Cette clé vous permet d'outrepasser la + directive ProxyIOBufferSize pour un + serveur cible spécifique. La valeur doit être au minimum 512 ou définie + à 0 pour la valeur par défaut du système de 8192. +
responsefieldsize8192Contrôle la taille du tampon pour le champ de la réponse mandatée. + Cette taille doit être au moins égale à la taille attendue du plus grand + en-tête d'une réponse mandatée. Une valeur de 0 implique l'utilisation + de la valeur par défaut du système, à savoir 8192 octets.
+ Disponible à partir de la version 2.4.34 du serveur HTTP Apache. +
keepaliveOff

Cette clé doit être utilisée lorsque vous avez un pare-feu + entre Apache httpd et le serveur d'arrière-plan, et si ce dernier tend + à interrompre les connexions inactives. Cette clé va faire en + sorte que le système d'exploitation envoie des messages + KEEP_ALIVE sur chacune des connexions inactives et + ainsi éviter la fermeture de la connexion par le pare-feu. + Pour conserver les connexions persistantes, definissez cette + propriété à On.

+

La fréquence de vérification des connexions TCP persistantes + initiale et subséquentes dépend de la configuration globale de l'OS, + et peut atteindre 2 heures. Pour être utile, la fréquence configurée + dans l'OS doit être inférieure au seuil utilisé par le pare-feu.

+ +
lbset0Définit le groupe de répartition de charge dont le serveur cible + est membre. Le répartiteur de charge va essayer tous les membres + d'un groupe de répartition de charge de numéro inférieur avant + d'essayer ceux dont le groupe possède un numéro supérieur. +
ping0Avec la clé Ping, le serveur web va "tester" la connexion + vers le serveur d'arrière-plan avant de transmettre la requête. + Avec AJP, mod_proxy_ajp envoie une requête + CPING sur la connexion ajp13 (implémenté sur Tomcat + 3.3.2+, 4.1.28+ et 5.0.13+). Avec HTTP, + mod_proxy_http envoie 100-Continue + au serveur d'arrière-plan (seulement avecHTTP/1.1 - pour les + serveurs d'arrière-plan non HTTP/1.1, cette clé ne produit + aucun effet). Dans les deux cas, ce paramètre correspond au + délai en secondes pour l'attente de la réponse. Cette + fonctionnalité a été ajoutée pour éviter les problèmes avec les + serveurs d'arrière-plan bloqués ou surchargés. + + Le trafic + réseau peut s'en trouver augmenté en fonctionnement normal, ce + qui peut poser problème, mais peut s'en trouver diminué dans les + cas où les noeuds de cluster sont arrêtés ou + surchargés. Le délai peut + aussi être défini en millisecondes en ajoutant le suffixe + ms. +
receivebuffersize0Définit la taille du tampon réseau explicite (TCP/IP) pour + les connexions mandatées. Cette clé vous permet d'outrepasser la + directive ProxyReceiveBufferSize pour un + serveur cible spécifique. Sa valeur doit être au minimum 512 ou définie + à 0 pour la valeur par défaut du système. +
redirect-Route pour la redirection du serveur cible. Cette valeur est en + général définie dynamiquement pour permettre une suppression + sécurisée du noeud du cluster. Si cette clé est définie, toutes + les requêtes sans identifiant de session seront redirigées vers + le membre de groupe de répartition de charge dont la route + correspond à la valeur de la clé. +
retry60Délai entre deux essais du serveur cible du jeu de connexions en + secondes. Si le serveur cible du jeu de connexions vers le serveur + d'arrière-plan est dans un état d'erreur, Apache httpd ne redirigera + pas de requête vers ce serveur avant l'expiration du délai + spécifié. Ceci permet d'arrêter le serveur d'arrière-plan pour + maintenance, et de le remettre en ligne plus tard. Une valeur de + 0 implique de toujours essayer les serveurs cibles dans un état d'erreur + sans délai. +
route-La route du serveur cible lorsqu'il est utilisé au sein d'un + répartiteur de charge. La route est une valeur ajoutée à + l'identifiant de session. +
status-Valeur constituée d'une simple lettre et définissant l'état + initial de ce serveur cible. + + + + + + + + +
D: le serveur cible est désactivé et n'accepte aucune requête.
S: le serveur cible est arrêté.
I: le serveur cible est en mode "erreurs ignorées", + et sera toujours considéré comme disponible.
R: Le serveur cible sert de remplaçant à + chaud. Lorsqu'un serveur cible avec un lbset donné est inutilisable + (maintenance, arrêt, en erreur, etc...), un serveur de remplacement à + chaud libre de même lbset sera utilisé à sa place. Les remplaçants à + chaud permettent de s'assurer qu'un nombre déterminé de serveurs cibles + sera toujours disponible pour un répartiteur de charge.
H: le serveur cible est en mode d'attente et ne sera + utilisé que si aucun autre serveur ou remplaçant à chaud n'est + disponible dans le jeu de serveurs cibles.
E: le serveur cible est en erreur.
N: le serveur cible est en mode vidage, n'acceptera que + les sessions persistantes qui lui appartiennent, et refusera + toutes les autres requêtes.
+ Une valeur d'état peut être définie (ce qui + correspond au comportement par défaut) en préfixant la valeur + par '+', ou annulée en préfixant la valeur par '-'. Ainsi, la + valeur 'S-E' définit l'état de ce serveur cible à "arrêté" et supprime + le drapeau "en-erreur". +
timeoutProxyTimeoutDélai d'attente de la connexion en secondes. Le nombre de + secondes pendant lesquelles Apache httpd attend l'envoi de + données vers le serveur d'arrière-plan. +
ttl-Durée de vie des connexions inactives et des entrées du pool + de connexions associées en secondes. Une fois cette + limite atteinte, une connexion ne sera pas réutilisée ; elle + sera fermée après un délai variable. +
flusherflush

Nom du fournisseur utilisé par mod_proxy_fdpass. + Voir la documentation de ce module pour plus de détails.

+
secret-Le mot de passe utilisé par mod_proxy_ajp. Il doit + identique au mot de passe configuré sur le côté serveur de la connexion + AJP.
+ Disponible à partir de la version 2.4.42 du serveur HTTP Apache. +
upgrade-

Protocole pris en charge par mod_proxy_http ou + mod_proxy_wstunnel pour le mécanisme de promotion de + protocole HTTP lors d'une négociation du client/navigateur HTTP (en + accord avec RFC 9110 - + Upgrade). Voir la note Promotion de + protocole ci-dessous

+
mapping-

Type de mappage entre le chemin et l'url. + Détermine la normalisation et/ou le (non-)décodage que + mod_proxy appliquera au chemin de l'uri + demandé avant de rechercher une correspondance avec le chemin. + Si un mappage correspond, il est appliqué au chemin de l'uri + de façon à ce que tous les contextes de répertoire qui utilisent un + chemin (comme <Location>) fassent l'objet d'une + recherche de correspondance en utilisant le même mappage.

+

mapping=encoded empêche le décodage des caractères % + contenus dans le chemin de l'uri de façon à ce que l'on + puisse par exemple utiliser des configurations telles que :

+
ProxyPass "/special%3Fsegment" "https://example.com/special%3Fsegment" mapping=encoded
+ +
<Location "/special%3Fsegment">
+  Require ip 172.17.2.0/24
+</Location>
+ +

mapping=servlet se réfère à la normalisation définie par + la spécification de la Servlet qui sera par exemple appliquée par Apache + Tomcat pour les conteneurs de servlet (en particulier, les paramètres du + chemin sont ignorés pour le mappage). Un chemin d'uri comme + /some;foo/path sera alors mappé comme + /some/path et correspondra donc à tout ce qui suit sans + tenir compte des paramètres du chemin demandé :

+
ProxyPass "/some/path" "https://servlet.example.com/some/path" mapping=servlet
+ +
<Location "/some/path">
+  Require valid-user
+</Location>
+ +

Note

+

Il est recommandé d'utiliser le même mappage côté Apache httpd + que celui utilisé côté arrière-plan. Par exemple, lors de la + configuration des autorisations dans les sections + <Location> pour des chemins mappés par + mod_proxy comme conteneurs de servlet (comme les + applications s'exécutant sous Apache Tomcat), on doit utiliser la + définition mapping=servlet pour éviter que les + paramètres du chemin et similaires n'interfèrent avec les + autorisations qui doivent être définies par Apache httpd.

+
+
+ +

Si l'URL de la directive Proxy débute par + balancer:// (par exemple: + balancer://cluster, toute information relative au + chemin est ignorée), alors un serveur cible virtuel ne communiquant pas + réellement avec le serveur d'arrière-plan sera créé. Celui-ci sera + en fait responsable de la gestion de plusieurs serveurs cibles "réels". Dans + ce cas, un jeu de paramètres particuliers s'applique à ce serveur cible + virtuel. Voir mod_proxy_balancer pour plus + d'informations à propos du fonctionnement du répartiteur de + charge. +

+
Paramètres du répartiteur
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParamètreDéfautDescription
lbmethodbyrequestsMéthode de répartition de charge utilisée. Permet de + sélectionner la méthode de planification de la répartition de + charge à utiliser. La valeur est soit byrequests, + pour effectuer un décompte de requêtes pondérées, soit + bytraffic, pour effectuer une répartition en + fonction du décompte des octets transmis, soit + bybusyness, pour effectuer une répartition en + fonction des requêtes en attente. La valeur par défaut est + byrequests. +
maxattempts1 de moins que le nombre de workers, ou 1 avec un seul + workerNombre maximum d'échecs avant abandon. +
nofailoverOffSi ce paramètre est défini à On, la session va + s'interrompre si le serveur cible est dans un état d'erreur ou + désactivé. Définissez ce paramètre à On si le serveur + d'arrière-plan ne supporte pas la réplication de session. +
stickysession-Nom de session persistant du répartiteur. La valeur est + généralement du style JSESSIONID ou + PHPSESSIONID, et dépend du serveur d'application + d'arrière-plan qui supporte les sessions. Si le serveur + d'application d'arrière-plan utilise un nom différent pour + les cookies et les identifiants codés d'URL (comme les + conteneurs de servlet), séparez-les par le caractère '|'. La + première partie contient le cookie et la seconde le chemin.
+ Disponible depuis la version 2.4.4 du serveur HTTP Apache. +
stickysessionsep"."Définit le caractère de séparation dans le cookie de + session. Certains serveurs d'application d'arrière-plan + n'utilisent pas le caractère '.' comme séparateur. Par exemple + le serveur Oracle Weblogic utilise le caractère '!'. Cette + option permet d'attribuer au caractère de séparation la valeur + appropriée. Si elle est définie à 'Off', aucun caractère de + séparation n'est utilisé. +
scolonpathdelimOffSi ce paramètre est défini à On, le caractère + ';' sera utilisé comme séparateur de chemin de session + persistante additionnel. Ceci permet principalement de simuler + le comportement de mod_jk lorsqu'on utilise des chemins du style + JSESSIONID=6736bcf34;foo=aabfa. +
timeout0Délai du répartiteur en secondes. Si ce paramètre est + défini, sa valeur correspond à la durée maximale d'attente pour + un serveur cible libre. Le comportement par défaut est de ne pas + attendre. +
failonstatus-Une liste de codes d'état HTTP séparés par des virgules. Si + ce paramètre est présent, le worker se mettra en erreur si le + serveur d'arrière-plan renvoie un des codes d'état spécifiés + dans la liste. La récupération du worker s'effectue comme dans + le cas des autres erreurs de worker. +
failontimeoutOffSi ce paramètre est défini à "On", un délai d'attente + dépassé en entrée/sortie après envoi d'une requête au serveur + d'arrière-plan va mettre le processus en état d'erreur. La + sortie de cet état d'erreur se passe de la même façon que pour + les autres erreurs.
+ Disponible à partir de la version 2.4.5 du serveur HTTP Apache. +
nonce<auto>Le nombre à usage unique de protection utilisé dans la page + de l'application balancer-manager. Par défaut, la + protection de la page est assurée par un nombre à usage unique + automatique à base d'UUID. Si une valeur est précisée, elle sera + utilisée comme nombre à usage unique. La valeur + None désactive la vérification du nombre à usage + unique. +

Note

+

En plus du nombre à usage unique, la page de l'application + balancer-manager peut être protégée par une ACL.

+
+
growth0Nombre de membres supplémentaires que l'on peut ajouter à ce + répartiteur en plus de ceux définis au niveau de la + configuration. +
forcerecoveryOnForce la relance immédiate de tous les membres sans tenir + compte de leur paramètre retry dans le cas où ils sont tous en + état d'erreur. Il peut cependant arriver qu'un membre déjà + surchargé entre dans une situation critique si la relance de + tous les membres est forcée sans tenir compte du paramètre retry + de chaque membre. Dans ce cas, définissez ce paramètre à + Off.
+ Disponible depuis la version 2.4.2 du serveur HTTP Apache. +
+

Exemple de configuration d'un répartiteur de charge

+
ProxyPass "/special-area" "http://special.example.com" smax=5 max=10
+ProxyPass "/" "balancer://mycluster/" stickysession=JSESSIONID|jsessionid nofailover=On
+<Proxy "balancer://mycluster">
+    BalancerMember "ajp://1.2.3.4:8009"
+    BalancerMember "ajp://1.2.3.5:8009" loadfactor=20
+    # Less powerful server, don't send as many requests there,
+    BalancerMember "ajp://1.2.3.6:8009" loadfactor=5
+</Proxy>
+ + +

La définition de remplaçants à chaud permet de s'assurer qu'un nombre + déterminé de serveurs sera toujours disponible dans le jeu de serveurs + cibles :

+
ProxyPass "/" "balancer://sparecluster/"
+<Proxy balancer://sparecluster>
+    BalancerMember ajp://1.2.3.4:8009
+    BalancerMember ajp://1.2.3.5:8009
+    # Les serveurs ci-dessous sont des remplaçants à chaud. Pour chaque serveur
+    # ci-dessus qui viendrait à être inutilisable (maintenance, arrêt, non
+    # contactable, en erreur, etc...), un de ces remplaçants à chaud prendra sa
+    # place. Deux serveurs seront toujours disponibles pour traiter une requête
+    # (à moins qu'un ou plusieurs remplaçant à chaud soit lui aussi
+    # indisponible).
+    BalancerMember ajp://1.2.3.6:8009 status=+R
+    BalancerMember ajp://1.2.3.7:8009 status=+R
+</Proxy>
+ + +

Configuration d'un serveur cible de réserve qui ne sera utilisé que si + aucun autre serveur cible ou remplaçant à chaud n'est disponible dans le jeu + de serveurs cibles :

+
ProxyPass "/" "balancer://hotcluster/"
+<Proxy "balancer://hotcluster">
+    BalancerMember "ajp://1.2.3.4:8009" loadfactor=1
+    BalancerMember "ajp://1.2.3.5:8009" loadfactor=2.25
+    # The server below is on hot standby
+    BalancerMember "ajp://1.2.3.6:8009" status=+H
+    ProxySet lbmethod=bytraffic
+</Proxy>
+ + +

Mots-clés additionnels de ProxyPass

+ +

Normalement, mod_proxy va mettre sous leur forme canonique les + URLs traitées par ProxyPass. Mais ceci peut être incompatible avec + certains serveurs d'arrière-plan, et en particulier avec ceux qui + utilisent PATH_INFO. Le mot-clé optionnel + nocanon modifie ce comportement et permet de transmettre + le chemin d'URL sous sa forme brute au serveur d'arrière-plan. Notez + que ceci peut affecter la sécurité de votre serveur d'arrière-plan, + car la protection limitée contre les attaques à base d'URL que + fournit le mandataire est alors supprimée.

+ +

Par défaut, mod_proxy inclut la chaîne de paramètres lors de la + génération de la variable d'environnement + SCRIPT_FILENAME. Le mot-clé optionnel noquery + (disponible à partir de la version 2.4.1) permet d'exclure cette + chaîne.

+ +

Lorsque la directive ProxyPass est utilisée à l'intérieur d'une + section <Location>, le premier argument est omis et le répertoire + local est obtenu à partir de la section <Location>. Il en sera de même dans une + section <LocationMatch> ; cependant, ProxyPass + n'interprète pas les expressions rationnelles, et il sera ici + nécessaire d'utiliser la directive + ProxyPassMatch à la place.

+ +

Cette directive ne peut pas être placée dans une section + <Directory> ou + <Files>.

+ +

Si vous avez besoin d'un configuration de mandataire inverse plus + souple, reportez-vous à la documentaion de la directive RewriteRule et son drapeau + [P].

+ +

Le mot-clé optionnel interpolate, en combinaison avec la directive + ProxyPassInterpolateEnv, permet à ProxyPass + d'interpoler les variables d'environnement à l'aide de la syntaxe + ${VARNAME}. Notez que de nombreuses variables + d'environnement standard dérivées de CGI n'existeront pas lorsque + l'interpolation se produit ; vous devrez alors encore avoir avoir + recours à mod_rewrite pour des règles + complexes. Notez aussi que l'interpolation n'est supportée dans + la partie protocole/hostname/port d'une URL que pour les variables qui sont + disponibles au moment où la directive est interprétée (comme pour la + directive Define). La détermination + dynamique de ces champs peut être effectuée à l'aide de + mod_rewrite, et l'exemple suivant décrit comment utiliser + mod_rewrite pour définir dynamiquement le protocole à http + ou https :

+ +
RewriteEngine On
+
+RewriteCond "%{HTTPS}" =off
+RewriteRule "". "-" [E=protocol:http]
+RewriteCond "%{HTTPS}" =on
+RewriteRule "." "-" [E=protocol:https]
+
+RewriteRule "^/mirror/foo/(.*)" "%{ENV:protocol}://backend.example.com/$1" [P]
+ProxyPassReverse  "/mirror/foo/" "http://backend.example.com/"
+ProxyPassReverse  "/mirror/foo/" "https://backend.example.com/"
+ + +

Promotion de + protocole

+

Depuis la version 2.4.47 du serveur HTTP Apache, la promotion de + protocole (tunneling) peut être géré bout à bout par + mod_proxy_http en utilisant le paramètre upgrade.

+

Bout à bout signifie que la requête de promotion de protocole en + provenance du client/navigateur est tout d'abord transmise par + mod_proxy_http au serveur origine et que le protocole de + la connexion ne sera modifié (et « tunnelisé » par + mod_proxy_http) que si le serveur origine accepte/initie + la promotion (réponse HTTP 101 Switching Protocols). Si le + serveur origine renvoie une réponse différente, + mod_proxy_http continuera la transmission en utilisant + (et en forçant) le protocole HTTP habituel pour cette connexion.

+

Voir Promotion de protocole vers Websocket + (versions 2.4.47 et ultérieures) pour un exemple de configuration qui + utilisemod_proxy_http.

+

Avec les versions 2.4.46 et antérieures du serveur HTTP Apache (ou si + la directive ProxyWebsocketFallbackToProxyHttp + des versions 2.4.48 et ultérieures désactive la prise en charge par + mod_proxy_http), voir la documentation de + mod_proxy_wstunnel pour la méthode permettant de mandater + le protocole WebSocket.

+
+ + +
+
top
+

Directive ProxyPassInherit

+ + + + + + + + +
Description:Héritage des directives ProxyPass définies au niveau du +serveur principal
Syntaxe:ProxyPassInherit On|Off
Défaut:ProxyPassInherit On
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
Compatibilité:Disponible à partir de la version 2.4.5 du serveur +HTTP Apache.
+

Cette directive permet à un serveur virtuel d'hériter des + directives ProxyPass définies + au niveau du serveur principal. Si vous utilisez la fonctionnalité de + modifications dynamiques du Balancer Manager, cette directive peut + causer des problèmes et des comportements inattendus et doit donc + être désactivée.

+

Les valeurs définies au niveau du serveur principal + constituent les valeurs par défaut pour tous les serveurs virtuels.

+

La désactivation de ProxyPassInherit désactive aussi la + directive BalancerInherit.

+ +
+
top
+

Directive ProxyPassInterpolateEnv

+ + + + + + + + +
Description:Active l'interpolation des variables d'environnement dans +les configurations de mandataires inverses
Syntaxe:ProxyPassInterpolateEnv On|Off
Défaut:ProxyPassInterpolateEnv Off
Contexte:configuration globale, serveur virtuel, répertoire
Statut:Extension
Module:mod_proxy
Compatibilité:Disponible depuis la version 2.2.9 d'Apache
+

Cette directive, ainsi que l'argument interpolate des + directives ProxyPass, + ProxyPassReverse, + ProxyPassReverseCookieDomain et + ProxyPassReverseCookiePath, permet de + configurer dynamiquement un mandataire inverse à l'aide de + variables d'environnement, ces dernières pouvant être définies par un + autre module comme mod_rewrite. Elle affecte les + directives ProxyPass, + ProxyPassReverse, + ProxyPassReverseCookieDomain, et + ProxyPassReverseCookiePath, en leur indiquant + de remplacer la chaîne ${nom_var} dans les directives + de configuration par la valeur de la variable d'environnement + nom_var (si l'option interpolate est + spécifiée).

+

La partie protocole/hostname/port de ProxyPass + peut contenir des variables, mais seulement celles qui sont accessibles au + moment où la directive est interprétée (similairement à la directive + Define). Pour tous les autres cas, + utilisez plutôt mod_rewrite.

+

Avertissement concernant les performances

+

Laissez cette directive à off, à moins que vous n'en ayez réellemnt + besoin ! Par exemple, ajouter des variables à + ProxyPass peut entraîner l'utilisation des serveurs + d'arrière-plan de mod_proxy configurés par défaut, et ceux-ci ne permettent + pas un réglage fin comme la réutilisation des connexions, entre + autres...).

+ +
+
top
+

Directive ProxyPassMatch

+ + + + + + +
Description:Fait correspondre des serveurs distants dans l'espace d'URL +du serveur local en utilisant des expressions rationnelles
Syntaxe:ProxyPassMatch [regex] !|url +[clé=valeur + [clé=valeur ...]]
Contexte:configuration globale, serveur virtuel, répertoire
Statut:Extension
Module:mod_proxy
+

Cette directive est identique à la directive ProxyPass, mais fait usage des + expressions rationnelles, au lieu d'une simple comparaison de + préfixes. L'expression rationnelle spécifiée est comparée à + l'url, et si elle correspond, le serveur va substituer + toute correspondance entre parenthèses dans la chaîne donnée et + l'utiliser comme nouvelle url.

+ +
Note : Cette directive ne peut pas être + utilisée dans un contexte de niveau répertoire.
+ +

Supposons que le serveur local a pour adresse + http://example.com/ ; alors

+ +
ProxyPassMatch "^(/.*\.gif)$" "http://backend.example.com/$1"
+ + +

va provoquer la conversion interne de la requête locale + http://example.com/foo/bar.gif en une requête mandatée + pour http://backend.example.com/foo/bar.gif.

+ +

Note

+

L'argument URL doit pouvoir être interprété en tant qu'URL + avant les substitutions d'expressions rationnelles (et + doit aussi l'être après). Ceci limite les correspondances que vous + pouvez utiliser. Par exemple, si l'on avait utilisé

+
        ProxyPassMatch "^(/.*\.gif)$"
+	"http://backend.example.com:8000$1"
+ +

dans l'exemple précédent, nous aurions provoqué une erreur de + syntaxe au démarrage du serveur. C'est une bogue (PR 46665 dans + ASF bugzilla), et il est possible de la contourner en reformulant + la correspondance :

+
ProxyPassMatch "^/(.*\.gif)$" "http://backend.example.com:8000/$1"
+ +
+ +

Le drapeau ! vous permet de ne pas mandater un + sous-répertoire donné.

+ +

Dans une section <LocationMatch>, le premier argument est + omis et l'expression rationnelle est obtenue à partir de la directive + <LocationMatch>.

+ +

Si vous avez besoin d'une configuration du mandataire inverse + plus flexible, voyez la directive RewriteRule avec le drapeau + [P].

+ +
+

Substitution par défaut

+

Lorsque le paramètre URL n'utilise pas de références arrières + dans l'expression rationnelle, l'URL originale sera ajoutée au + paramètre URL. +

+
+ +
+

Avertissement à propos de la sécurité

+

Lors de la construction de l'URL cible de la règle, il convient + de prendre en compte l'impact en matière de sécurité qu'aura le + fait de permettre au client d'influencer le jeu d'URLs pour + lesquelles votre serveur agira en tant que mandataire. + Assurez-vous que la partie protocole://nom-serveur de l'URL soit + fixe, ou ne permette pas au client de l'influencer induement.

+
+ +
+
top
+

Directive ProxyPassReverse

+ + + + + + +
Description:Ajuste l'URL dans les en-têtes de la réponse HTTP envoyée +par un serveur mandaté en inverse
Syntaxe:ProxyPassReverse [chemin] url +[interpolate]
Contexte:configuration globale, serveur virtuel, répertoire
Statut:Extension
Module:mod_proxy
+

Cette directive permet de faire en sorte qu'Apache httpd ajuste l'URL + dans les en-têtes Location, + Content-Location et URI des réponses de + redirection HTTP. Ceci est essentiel lorsqu'Apache httpd est utilisé en + tant que mandataire inverse (ou passerelle), afin d'éviter de + court-circuiter le mandataire inverse suite aux redirections HTTP + sur le serveur d'arrière-plan qui restent derrière le mandataire + inverse.

+ +

Seuls les en-têtes de réponse HTTP spécialement mentionnés + ci-dessus seront réécrits. Apache httpd ne réécrira ni les autres en-têtes + de réponse, ni par défaut les références d'URLs dans les pages HTML. Cela + signifie que dans le cas où un contenu mandaté contient des + références à des URLs absolues, elles court-circuiteront le + mandataire. Pour réécrire un contenu HTML afin qu'il corresponde au + mandataire, vous devez charger et activer le module + mod_proxy_html. +

+ +

chemin est le nom d'un chemin virtuel local. + url est une URL partielle pour le serveur distant. Ces + paramètres s'utilisent de la même façon qu'avec la + directive ProxyPass.

+ +

Supposons par exemple que le serveur local a pour adresse + http://example.com/ ; alors

+ +
ProxyPass         "/mirror/foo/" "http://backend.example.com/"
+ProxyPassReverse  "/mirror/foo/" "http://backend.example.com/"
+ProxyPassReverseCookieDomain  "backend.example.com" "public.example.com"
+ProxyPassReverseCookiePath  "/"  "/mirror/foo/"
+ + +

ne va pas seulement provoquer la conversion interne d'une requête + locale pour http://example.com/mirror/foo/bar en une + requête mandatée pour http://backend.example.com/bar + (la fonctionnalité fournie par ProxyPass). Il va + aussi s'occuper des redirections que le serveur + backend.example.com envoie lorsqu'il redirige + http://backend.example.com/bar vers + http://backend.example.com/quux. Apache + httpd corrige ceci en http://example.com/mirror/foo/quux + avant de faire suivre la redirection HTTP au client. Notez que le + nom d'hôte utilisé pour construire l'URL est choisi en respectant la + définition de la directive UseCanonicalName.

+ +

Notez que la directive ProxyPassReverse + peut aussi être utilisée en conjonction avec la + fonctionnalité de mandataire + (RewriteRule ... [P]) du module + mod_rewrite, car elle ne dépend pas d'une directive + ProxyPass + correspondante.

+ +

Le mot-clé optionnel interpolate, en combinaison avec la + directive ProxyPassInterpolateEnv, + permet l'interpolation des variables d'environnement spécifiées en utilisant + le format ${VARNAME} Notez que l'interpolation n'est pas + supportée dans la partie protocole d'une URL.

+ +

Lorsque cette directive est utilisée dans une section <Location>, le premier + argument est omis et le répertoire local est obtenu à partir de + l'argument de la directive <Location>. Il en est de même à l'intérieur + d'une section <LocationMatch>, mais le résultat ne sera + probablement pas celui attendu car ProxyPassReverse va interpréter + l'expression rationnelle littéralement comme un chemin ; si besoin + est dans ce cas, définissez la directive ProxyPassReverse en dehors + de la section, ou dans une section <Location> séparée.

+ +

Cette directive ne peut pas être placée dans une section + <Directory> ou + <Files>.

+ +
+
top
+

Directive ProxyPassReverseCookieDomain

+ + + + + + +
Description:Ajuste la chaîne correspondant au domaine dans les en-têtes +Set-Cookie en provenance d'un serveur mandaté
Syntaxe:ProxyPassReverseCookieDomain domaine-interne +domaine-public [interpolate]
Contexte:configuration globale, serveur virtuel, répertoire
Statut:Extension
Module:mod_proxy
+

L'utilisation de cette directive est similaire à celle de la +directive ProxyPassReverse, +mais au lieu de réécrire des en-têtes qui contiennent des URLs, elle +réécrit la chaîne correspondant au domaine dans les en-têtes +Set-Cookie.

+ +
+
top
+

Directive ProxyPassReverseCookiePath

+ + + + + + +
Description:Ajuste la chaîne correspondant au chemin dans les en-têtes +Set-Cookie en provenance d'un serveur mandaté
Syntaxe:ProxyPassReverseCookiePath chemin-interne +chemin-public [interpolate]
Contexte:configuration globale, serveur virtuel, répertoire
Statut:Extension
Module:mod_proxy
+

+Cette directive s'avère utile en conjonction avec la directive +ProxyPassReverse dans les +situations où les chemins d'URL d'arrière-plan correspondent à des +chemins publics sur le mandataire inverse. Cette directive permet de +réécrire la chaîne path dans les en-têtes +Set-Cookie. Si le début du chemin du cookie correspond à +chemin-interne, le chemin du cookie sera remplacé par +chemin-public. +

+Dans l'exemple fourni avec la directive ProxyPassReverse, la directive : +

+
ProxyPassReverseCookiePath  "/"  "/mirror/foo/"
+ +

+va réécrire un cookie possédant un chemin d'arrière-plan / +(ou /example ou en fait tout chemin) +en /mirror/foo/.. +

+ +
+
top
+

Directive ProxyPreserveHost

+ + + + + + + + +
Description:Utilise l'en-tête de requête entrante Host pour la requête +du mandataire
Syntaxe:ProxyPreserveHost On|Off
Défaut:ProxyPreserveHost Off
Contexte:configuration globale, serveur virtuel, répertoire
Statut:Extension
Module:mod_proxy
Compatibilité:Utilisable +dans un contexte de répertoire depuis la version 2.3.3.
+

Lorsqu'elle est activée, cette directive va transmettre l'en-tête + Host: de la requête entrante vers le serveur mandaté, au lieu + du nom d'hôte spécifié par la directive ProxyPass.

+ +

Cette directive est habituellement définie à Off. + Elle est principalement utile dans les configurations particulières + comme l'hébergement virtuel mandaté en masse à base de nom, où + l'en-tête Host d'origine doit être évalué par le serveur + d'arrière-plan.

+ +
+
top
+

Directive ProxyReceiveBufferSize

+ + + + + + + +
Description:Taille du tampon réseau pour les connexions mandatées HTTP +et FTP
Syntaxe:ProxyReceiveBufferSize octets
Défaut:ProxyReceiveBufferSize 0
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
+

La directive ProxyReceiveBufferSize permet + de spécifier une taille de tampon réseau explicite (TCP/IP) pour les + connexions mandatées HTTP et FTP, afin d'améliorer le débit de + données. Elle doit être supérieure à 512 ou définie à + 0 pour indiquer que la taille de tampon par défaut du + système doit être utilisée.

+ +

Exemple

ProxyReceiveBufferSize 2048
+
+ +
+
top
+

Directive ProxyRemote

+ + + + + + +
Description:Mandataire distant à utiliser pour traiter certaines +requêtes
Syntaxe:ProxyRemote comparaison serveur-distant
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
+

Cette directive permet de définir des mandataires distants pour + ce mandataire. comparaison est soit le nom d'un protocole + que supporte le serveur distant, soit une URL partielle pour + laquelle le serveur distant devra être utilisé, soit * + pour indiquer que le serveur distant doit être utilisé pour toutes + les requêtes. serveur-distant est une URL partielle + correspondant au serveur distant. Syntaxe :

+ +

+ serveur-distant = + protocole://nom-serveur[:port] +

+ +

protocole est effectivement le protocole à utiliser + pour communiquer avec le serveur distant ; ce module ne supporte que + http et https. Lorsqu'on utilise + https, les requêtes sont redirigées par le mandataire + distant en utilisant la méthode HTTP CONNECT.

+ +

Exemple

ProxyRemote "http://goodguys.example.com/" "http://mirrorguys.example.com:8000"
+ProxyRemote "*" "http://cleverproxy.localdomain"
+ProxyRemote "ftp" "http://ftpproxy.mydomain:8080"
+
+ +

Dans la dernière ligne de l'exemple, le mandataire va faire + suivre les requêtes FTP, encapsulées dans une autre requête mandatée + HTTP, vers un autre mandataire capable de les traiter.

+ +

Cette directive supporte aussi les configurations de mandataire + inverse ; un serveur web d'arrière-plan peut être intégré dans + l'espace d'URL d'un serveur virtuel, même si ce serveur est caché + par un autre mandataire direct.

+ +
+
top
+

Directive ProxyRemoteMatch

+ + + + + + +
Description:Le mandataire distant à utiliser pour traiter les requêtes +correspondant à une expression rationnelle
Syntaxe:ProxyRemoteMatch regex serveur-distant
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
+

La directive ProxyRemoteMatch est + identique à la directive ProxyRemote, à l'exception du + premier argument qui est une expression + rationnelle à mettre en correspondance avec l'URL de la + requête.

+ +
+
top
+

Directive ProxyRequests

+ + + + + + + +
Description:Active la fonctionnalité (standard) de mandataire +direct
Syntaxe:ProxyRequests On|Off
Défaut:ProxyRequests Off
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
+

Cette directive permet d'activer/désactiver la fonctionnalité de + serveur mandataire direct d'Apache httpd. Définir ProxyRequests à + Off n'interdit pas l'utilisation de la directive + ProxyPass.

+ +

Pour une configuration typique de mandataire inverse ou + passerelle, cette directive doit être définie à + Off.

+ +

Afin d'activer la fonctionnalité de mandataire pour des sites + HTTP et/ou FTP, les modules mod_proxy_http et/ou + mod_proxy_ftp doivent également être chargés dans le + serveur.

+ +

Pour activer la fonctionnalité de mandataire sur les sites chiffrés en HTTPS, le module + mod_proxy_connect doit également être chargé dans le serveur.

+ +

Avertissement

+

N'activez pas la fonctionnalité de mandataire avec la directive + ProxyRequests 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.

+
+ +

Voir aussi

+ +
+
top
+

Directive ProxySet

+ + + + + + + +
Description:Définit différents paramètres relatifs à la répartition de +charge des mandataires et aux membres des groupes de répartition de +charge
Syntaxe:ProxySet url clé=valeur [clé=valeur ...]
Contexte:configuration globale, serveur virtuel, répertoire
Statut:Extension
Module:mod_proxy
Compatibilité:ProxySet n'est disponible que depuis la version 2.2 +du serveur HTTP Apache.
+

Cette directive propose une méthode alternative pour définir tout + paramètre relatif aux répartiteurs de charge et serveurs cibles de + mandataires normalement définis via la directive ProxyPass. Si elle se trouve dans un + conteneur <Proxy url de répartiteur|url de + serveur cible>, l'argument url n'est pas + nécessaire. Comme effet de bord, le répartiteur ou serveur cible respectif + est créé. Ceci peut s'avérer utile pour la mise en oeuvre d'un + mandataire inverse via une directive RewriteRule au lieu de ProxyPass.

+ +
<Proxy "balancer://hotcluster">
+    BalancerMember "http://www2.example.com:8080" loadfactor=1
+    BalancerMember "http://www3.example.com:8080" loadfactor=2
+    ProxySet lbmethod=bytraffic
+</Proxy>
+
+ +
<Proxy "http://backend">
+    ProxySet keepalive=On
+</Proxy>
+ + +
ProxySet "balancer://foo" lbmethod=bytraffic timeout=15
+ + +
ProxySet "ajp://backend:7001" timeout=15
+ + +

Avertissement

+

Gardez à l'esprit qu'une même clé de paramètre peut avoir + différentes significations selon qu'elle s'applique à un + répartiteur ou à un serveur cible, et ceci est illustré par les deux + exemples précédents où il est question d'un timeout.

+
+ + +
+
top
+

Directive ProxySourceAddress

+ + + + + + + +
Description:Définit l'adresse IP locale pour les connexions mandatées +sortantes
Syntaxe:ProxySourceAddress adresse
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
Compatibilité:Disponible depuis la version 2.3.9
+

Cette directive permet de définir une adresse IP locale + spécifique à laquelle faire référence lors d'une connexion à un + serveur d'arrière-plan.

+ + +
+
top
+

Directive ProxyStatus

+ + + + + + + + +
Description:Affiche l'état du répartiteur de charge du mandataire dans +mod_status
Syntaxe:ProxyStatus Off|On|Full
Défaut:ProxyStatus Off
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
Compatibilité:Disponible depuis la version 2.2 d'Apache
+

Cette directive permet de spécifier si les données d'état du + répartiteur de charge du mandataire doivent être affichées via la + page d'état du serveur du module mod_status.

+

Note

+

L'argument Full produit le même effet que + l'argument On.

+
+ + +
+
top
+

Directive ProxyTimeout

+ + + + + + + +
Description:Délai d'attente réseau pour les requêtes +mandatées
Syntaxe:ProxyTimeout secondes
Défaut:Valeur de la directive Timeout
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
+

Cette directive permet à l'utilisateur de spécifier un délai pour + les requêtes mandatées. Ceci s'avère utile dans le cas d'un serveur + d'applications lent et bogué qui a tendance à se bloquer, et si vous + préférez simplement renvoyer une erreur timeout et abandonner la + connexion en douceur plutôt que d'attendre jusqu'à ce que le serveur + veuille bien répondre.

+ +
+
top
+

Directive ProxyVia

+ + + + + + + +
Description:Information fournie dans l'en-tête de réponse HTTP +Via pour les requêtes mandatées
Syntaxe:ProxyVia On|Off|Full|Block
Défaut:ProxyVia Off
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy
+

Cette directive permet de contrôler l'utilisation de l'en-tête + HTTP Via: par le mandataire. Le but recherché est de + contrôler le flux des requêtes mandatées tout au long d'une chaîne + de serveurs mandataires. Voir RFC 2616 (HTTP/1.1), + section 14.45 pour une description des lignes d'en-tête + Via:.

+ +
    +
  • Si elle est définie à Off, valeur par défaut, cette + directive n'effectue aucun traitement particulier. Si une requête ou + une réponse contient un en-tête Via:, il est transmis + sans modification.
  • + +
  • Si elle est définie à On, chaque requête ou réponse + se verra ajouter une ligne d'en-tête Via: pour le + serveur courant.
  • + +
  • Si elle est définie à Full, chaque ligne d'en-tête + Via: se verra ajouter la version du serveur Apache + httpd sous la forme d'un champ de commentaire Via:.
  • + +
  • Si elle est définie à Block, chaque requête + mandatée verra ses lignes d'en-tête Via: supprimées. + Aucun nouvel en-tête Via: ne sera généré.
  • +
+ +
+
+
+

Langues Disponibles:  en  | + fr  | + ja 

+
top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our mailing lists.
+
+ \ No newline at end of file -- cgit v1.2.3