Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ
îðèãèíàëüíîãî äîêóìåíòà
: http://www.arcetri.astro.it/manual/fr/mod/mod_proxy.html
Äàòà èçìåíåíèÿ: Mon Jan 21 19:44:30 2013 Äàòà èíäåêñèðîâàíèÿ: Fri Feb 28 05:57:46 2014 Êîäèðîâêà: koi8-r Ïîèñêîâûå ñëîâà: http astrokuban.info astrokuban |
Serveur Apache HTTP Version 2.2
Description: | Serveur mandataire/passerelle HTTP/1.1 |
---|---|
Statut: | Extension |
Identificateur de Module: | proxy_module |
Fichier Source: | mod_proxy.c |
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.
Ce module implÈmente un mandataire/passerelle pour Apache. Il
implÈmente la fonctionnalitÈ de mandataire pour AJP13
(Apache JServe Protocol version 1.3), FTP
,
CONNECT
(pour SSL), HTTP/0.9
,
HTTP/1.0
, et HTTP/1.1
. Le module peut Étre
configurÈ pour se connecter aux autres modules mandataires qui
gÕrent ces protocoles.
Les diverses fonctionnalitÈs de
mandataire d'Apache sont rÈparties entre plusieurs modules
complÈmentaires de mod_proxy
:
mod_proxy_http
, mod_proxy_ftp
,
mod_proxy_ajp
, mod_proxy_balancer
,
et mod_proxy_connect
. Ainsi, si vous voulez
utiliser une ou plusieurs fonctionnalitÈs de mandataire
particuliÕres, chargez mod_proxy
et le(s)
module(s) appropriÈ(s) dans le serveur (soit statiquement Þ la
compilation, soit dynamiquement via la directive LoadModule
).
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.
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, puis le mandataire extrait 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 des utilisateurs Þ Internet pour 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
Þ on pour configurer
un mandataire inverse.
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
.
ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar
ProxyRequests On
ProxyVia On
<Proxy *>
Order deny,allow
Deny from all
Allow from interne.example.com
</Proxy>
Le mandataire gÕre la configuration des serveurs originaux, ainsi que leurs paramÕtres de communication dans des objets appelÈs workers ou Gestionnaires de serveur. Deux workers intÈgrÈs par dÈfaut sont disponibles : le worker de mandataire direct et le worker de mandataire inverse. Des workers supplÈmentaires peuvent Étre configurÈs explicitement.
Les deux workers par dÈfaut ont une configuration fixe et seront utilisÈs si aucun autre worker ne correspond Þ la requÉte. Ils n'utilisent ni les connexions HTTP persistantes, ni les jeux de connexions. Les connexions TCP vers le serveur original seront donc ouvertes et fermÈes pour chaque requÉte.
Les workers configurÈs explicitement sont identifiÈs par leur
URL. Dans le cas d'un mandataire inverse, ils sont gÈnÈralement
crÈÈs et configurÈs via les directives ProxyPass
ou ProxyPassMatch
:
ProxyPass /example http://backend.example.com connectiontimeout=5 timeout=30
Cet exemple crÈe un worker associÈ Þ l'URL du serveur original
http://backend.example.com
, et utilisant les dÈlais
spÈcifiÈs. Dans le cas d'un mandataire direct, les workers sont
gÈnÈralement dÈfinis via la directive ProxySet
directive :
ProxySet http://backend.example.com connectiontimeout=5 timeout=30
ou encore via une combinaison des directives Proxy
et ProxySet
:
<Proxy http://backend.example.com>
ProxySet connectiontimeout=5 timeout=30
</Proxy>
L'utilisation de workers configurÈs explicitement dans le mode
direct n'est pas trÕs courante, car les mandataires directs
communiquent avec de nombreux serveurs originaux. Il est cependant
intÈressant de crÈer des workers explicites pour certains serveurs
originaux si ces derniers sont utilisÈs trÕs souvent. Les workers
configurÈs explicitement n'ont en eux-mÉmes aucun concept 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È avec un
mandataire inverse, sera aussi utilisÈ pour les requÉtes mandatÈes
en direct chaque fois que l'URL du serveur original correspondra Þ
l'URL du worker, et vice versa.
L'URL identifiant un worker direct correspond Þ l'URL de son serveur original comportant tout ÈlÈment de chemin Èventuel :
ProxyPass /examples http://backend.example.com/examples
ProxyPass /docs http://backend.example.com/docs
Cet exemple dÈfinit deux workers diffÈrents, chacun d'entre eux utilisant une configuration et un jeu de connexions sÈparÈs.
Le partage de worker se produit lorsque les URLs des workers se chevauchent, c'est Þ dire lorsque l'URL d'un worker correspond Þ une partie du 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 utilisÈ Þ sa place. L'avantage de ceci rÈside
dans le fait qu'il n'y a plus qu'un jeu de connexions, celles-ci
Ètant donc rÈutilisÈes plus souvent. Notez que tous les
attributs de configuration dÈfinis explicitement pour le second
worker et certaines valeurs par dÈfaut vont Ècraser la
configuration dÈfinie pour le premier worker, ce qui va
provoquer la journalisation d'un avertissement. Dans l'exemple
prÈcÈdent, la valeur de dÈlai finale pour l'URL
/apps
sera 10
au lieu de 60
!
Pour Èviter ce partage, classez vos dÈfinitions de workers de
l'URL la plus longue Þ la plus courte. Si au contraire, vous
voulez favoriser ce partage, utilisez l'ordre de classement
inverse. Voir aussi l'avertissement en rapport Þ propos de
l'ordre de classement des directives ProxyPass
.
Les workers configurÈs explicitement sont de deux sortes :
workers directs et workers Þ rÈpartition (de
charge). Ils supportent de nombreux attributs de
configuration importants dÈcrits ci-dessous dans la directive
ProxyPass
. Tous ces
attributs peuvent aussi Étre dÈfinis via la directive ProxySet
.
Le jeu d'options disponibles pour un worker direct dÈpend du
protocole, qui est spÈcifiÈ dans l'URL du serveur original. Parmi
les protocoles disponibles, on trouve ajp
,
ftp
, http
et scgi
.
Les workers Þ rÈpartition sont des workers virtuels qui utilisent des workers directs considÈrÈs comme leurs membres pour le traitement effectif des requÉtes. Chaque rÈpartiteur peut possÈder plusieurs membres. Pour traiter une requÉte, il choisit un de ses membres en fonction de l'algorithme de rÈpartition de charge dÈfini.
Un worker Þ rÈpartition est crÈÈ si son URL utilise
balancer
comme protocole. L'URL de rÈpartition
identifie de maniÕre unique le worker Þ rÈpartition. On peut
ajouter des membres Þ un rÈpartiteur via la directive BalancerMember
.
Vous pouvez restreindre l'accÕs Þ votre mandataire via le bloc
de contrÒle <Proxy>
comme dans
l'exemple suivant :
<Proxy *>
Order Deny,Allow
Deny from all
Allow from 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 dÈfinissant la directive ProxyPass
Þ "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.
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.
Un serveur mandataire Apache 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 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.
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 /serveur-non-conforme/>
ProxyPass http://serveur-non-conforme:7001/foo/
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</Location>
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, 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.
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
X-Forwarded-Host
Host
.X-Forwarded-Server
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 original 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.
Description: | Ports autorisÈs Þ se CONNECT er Þ travers le
mandataire |
---|---|
Syntaxe: | AllowCONNECT port [port] ... |
DÈfaut: | AllowCONNECT 443 563 |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_proxy |
La directive AllowCONNECT
permet de
spÈcifier une liste de numÈros de ports auxquels la mÈthode de
mandataire CONNECT
pourra se connecter. Les navigateurs
d'aujourd'hui utilisent cette mÈthode dans le cas oÛ une connexion
https
est requise et oÛ le tunneling mandataire sur
HTTP est en service.
Par dÈfaut, seuls les ports par dÈfauts https (443
)
et snews (563
) sont pris en compte. Vous pouvez
utiliser la directive AllowCONNECT
pour
outrepasser ces valeurs par dÈfaut et n'autoriser les connexions que
vers les ports spÈcifiÈs.
Notez que le module mod_proxy_connect
doit Étre
chargÈ dans le serveur pour pouvoir accÈder au support de
CONNECT
.
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 d'Apache. |
Cette directive parmet 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
.
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
.
Description: | Serveurs, domaines ou rÈseaux auquels on se connectera directement |
---|---|
Syntaxe: | NoProxy domaine [domaine] ... |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_proxy |
Cette directive n'a d'utilitÈ que pour les serveurs mandataires
Apache 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
.
ProxyRemote * http://pare-feu.example.com:81
NoProxy .example.com 192.168.112.0/21
Le type des arguments serveur de la directive
NoProxy
appartiennent Þ la liste suivante
:
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).
.com .apache.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.
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
.example.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.
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
255.255.0.0
)192.168.112.0/21
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.
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.
192.168.123.7
Une Adresse IP ne nÈcessite pas de rÈsolution DNS, et peut ainsi s'avÈrer plus efficace quant aux performances d'Apache.
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).
prep.ai.example.com
www.apache.org
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 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.
Description: | Conteneur de directives s'appliquant Þ des ressources mandatÈes |
---|---|
Syntaxe: | <Proxy url-avec-jokers> ...</Proxy> |
Contexte: | configuration du serveur, 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 eexemple, les lignes suivantes n'autoriseront Þ accÈder Þ un
contenu via votre serveur mandataire que les hÒtes appartenant Þ
votre-reseau.example.com
:
<Proxy *>
Order Deny,Allow
Deny from all
Allow from 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>
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 du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_proxy |
CompatibilitÈ: | Disponible depuis la version 2.0.44 d'Apache |
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
Ignore
StartBody
Description: | Termes, serveurs ou domaines bloquÈs par le mandataire |
---|---|
Syntaxe: | ProxyBlock *|terme|serveur|domaine
[terme|serveur|domaine] ... |
Contexte: | configuration du serveur, 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 items 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.
ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu
rocky.wotsamattau.edu
aurait aussi correspondu s'il
avait ÈtÈ spÈcifiÈ par son adresse IP.
Notez que wotsamattau
aurait suffi pour correspondre
Þ wotsamattau.edu
.
Notez aussi que
ProxyBlock *
bloque les connexions vers tous les sites.
Description: | Nom de domaine par dÈfaut pour les requÉtes mandatÈes |
---|---|
Syntaxe: | ProxyDomain Domaine |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_proxy |
Cette directive n'a d'utilitÈ que pour les serveurs mandataires
Apache 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È.
ProxyRemote * http://firewall.example.com:81
NoProxy .example.com 192.168.112.0/21
ProxyDomain .example.com
Description: | Outrepasser les pages d'erreur pour les contenus mandatÈs |
---|---|
Syntaxe: | ProxyErrorOverride On|Off |
DÈfaut: | ProxyErrorOverride Off |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_proxy |
CompatibilitÈ: | Disponible depuis la version 2.0 d'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).
Description: | DÈfinit le jeu de caractÕres des listings FTP mandatÈs |
---|---|
Syntaxe: | ProxyFtpDirCharset jeu-caractÕres |
DÈfaut: | ProxyFtpDirCharset ISO-8859-1 |
Contexte: | configuration du serveur, serveur virtuel, rÈpertoire |
Statut: | Extension |
Module: | mod_proxy |
CompatibilitÈ: | Disponible depuis la version 2.2.7 d'Apache |
La directive ProxyFtpDirCharset
permet de
dÈfinir le jeu de caractÕres Þ utiliser pour les listings FTP en
HTML gÈnÈrÈs par mod_proxy_ftp
.
Description: | DÈtermine la taille du tampon interne de transfert de donnÈes |
---|---|
Syntaxe: | ProxyIOBufferSize octets |
DÈfaut: | ProxyIOBufferSize 8192 |
Contexte: | configuration du serveur, 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 doit
Étre infÈrieure ou Ègale Þ 8192
octets.
Dans la plupart des cas, il n'y a aucune raison de modifier cette valeur.
Description: | Conteneur de directives s'appliquant Þ des ressources mandatÈes correspondant Þ une expression rationnelle |
---|---|
Syntaxe: | <ProxyMatch regex> ...</ProxyMatch> |
Contexte: | configuration du serveur, 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.
Description: | Nombre maximum de mandataires Þ travers lesquelles une requÉte peut Étre redirigÈe |
---|---|
Syntaxe: | ProxyMaxForwards nombre |
DÈfaut: | ProxyMaxForwards -1 |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_proxy |
CompatibilitÈ: | Disponible depuis Apache 2.0 ; 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.
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 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.
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] |
Contexte: | configuration du serveur, serveur virtuel, rÈpertoire |
Statut: | Extension |
Module: | mod_proxy |
Cette directive permet 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.
ProxyRequests
doit Étre dÈfinie Þ
off lorsqu'on utilise la directive
ProxyPass
.Supposons que le serveur local a pour adresse
http://example.com/
; alors la ligne
ProxyPass /miroir/foo/ http://backend.example.com/
va convertir en interne toute requÉte pour
http://example.com/miroir/foo/bar
en une requÉte
mandatÈe pour http://backend.example.com/bar
.
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 :
ProxyPass /miroir/foo/i !
ProxyPass /miroir/foo http://backend.example.com
va mandater toutes les requÉtes pour /miroir/foo
vers backend.example.com
, sauf les requÉtes
pour /miroir/foo/i
.
Les directives ProxyPass
et ProxyPassMatch
sont traitÈes selon
leur ordre d'apparition dans le fichier de configuration. La
premiÕre qui correspond s'applique. Ainsi, vous devez classer les
directives ProxyPass
qui
peuvent entrer en conflit, de l'URL la plus longue Þ la plus
courte. Dans le cas contraire, les directives dont l'URL
constitue une partie du dÈbut de l'URL de directives
apparaissant plus loin dans la configuration vont occulter ces
derniÕres. Notez que tout ceci est en relation avec le partage de
worker.
Pour les mÉmes raisons, les exclusions doivent apparaÍtre
avant les directives ProxyPass
gÈnÈrales.
Depuis la version 2.1 du serveur HTTP Apache, mod_proxy supporte
les jeux de connexions vers un serveur d'arriÕre-plan. Ainsi, les
connexions crÈÈes Þ la demande peuvent Étre conservÈes dans un
jeu pour une utilisation ultÈrieure. Les limites de la taille
du jeu de connexions et d'autres paramÕtres peuvent Étre dÈfinis au
niveau de la directive ProxyPass
via des
arguments clÈ=valeur
dÈcrits dans la table ci-dessous.
Par dÈfaut, mod_proxy permettra de conserver le nombre maximum de
connexions pouvant Étre utilisÈes simultanÈment par le processus
enfant concernÈ du serveur web. Vous pouvez utiliser le paramÕtre
max
pour rÈduire ce nombre par rapport Þ la valeur par
dÈfaut. Vous pouvez aussi utiliser le paramÕtre ttl
pour dÈfinir une durÈe de vie optionnelle ; ainsi, les connections
qui n'ont pas ÈtÈ utilisÈes au bout de ttl
secondes
seront fermÈes. Le paramÕtre ttl
permet aussi
d'empÉcher l'utilisation d'une connexion susceptible d'Étre fermÈe
suite Þ l'expiration de la durÈe de vie des connexions persistantes
sur le serveur d'arriÕre-plan.
Le jeu de connexions est maintenu au niveau de chaque processus
enfant du serveur web, et max
et les autres paramÕtres
ne font l'objet d'aucune coordination entre les diffÈrents processus
enfants, sauf bien sur dans le cas oÛ un seul processus enfant est
permis par la configuration du module multiprocessus.
ProxyPass /example http://backend.example.com max=20 ttl=120 retry=300
ParamÕtre | DÈfaut | Description |
---|---|---|
min | 0 | Nombre minimum d'entrÈes dans le jeu de connexions, sans rapport avec le nombre rÈel de connexions. Ne doit Étre modifiÈ par rapport Þ la valeur par dÈfaut que dans des circonstances spÈciales oÛ la mÈmoire du tas associÈe aux connexions d'arriÕre-plan doit Étre prÈallouÈe ou conservÈe. |
max | 1...n | Nombre maximum de connexions permises vers le serveur
d'arriÕre-plan. La valeur par dÈfaut pour cette limite est le
nombre de threads par processus pour le module multiprocessus
actif. Pour le MPM Prefork, la valeur est toujours 1, alors que
pour les autres, on peut la contrÒler via la directive
ThreadsPerChild . |
smax | max | Les entrÈes conservÈes du jeu de connexions au dessus de
cette limite sont libÈrÈes au cours de certaines opÈrations si
elles n'ont pas ÈtÈ utilisÈes au bout de leur durÈe de vie
dÈfinie par le paramÕtre ttl . Si l'entrÈe du jeu de
connexions est associÈe Þ une connexion, cette derniÕre sera
alors fermÈe. Ce paramÕtre ne doit Étre modifiÈ par rapport Þ la
valeur par dÈfaut que dans des circonstances spÈciales oÛ les
entrÈes du jeu de connexions, et toutes connexions associÈes qui
ont dÈpassÈ leur durÈe de vie doivent Étre respectivement
libÈrÈes ou fermÈes plus impÈrativement. |
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 renverra
l'Ètat SERVER_BUSY au client.
|
connectiontimeout | timeout | DÈlai d'attente d'une connexion en secondes. La durÈe en secondes pendant laquelle Apache 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. |
disablereuse | Off | Vous 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 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). Pour dÈsactiver la rÈutilisation du jeu de
connexions, dÈfinissez cette clÈ Þ On .
|
flushpackets | off | Permet 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' 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 AJP. |
flushwait | 10 | Le 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'. |
keepalive | Off | 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
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. |
lbset | 0 | DÈ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. |
ping | 0 | Avec la clÈ ping, le serveur web envoie une requÉte
CPING sur la connexion ajp13 avant de rediriger une
requÉte. La valeur correspond au dÈlai d'attente de la rÈponse
CPONG . Cette fonctionnalitÈ a ÈtÈ ajoutÈe afin de
pallier aux problÕmes de blocage et de surcharge des serveurs
Tomcat, et nÈcessite le support de ping/pong ajp13 qui a ÈtÈ
implÈmentÈ dans Tomcat 3.3.2+, 4.1.28+ et 5.0.13+. 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. Cette
clÈ n'est actuellement utilisable qu'avec AJP. Le dÈlai peut
aussi Étre dÈfini en millisecondes en ajoutant le suffixe
ms.
|
loadfactor | 1 | Facteur de charge du serveur cible Þ utiliser avec les membres d'un groupe de rÈpartition de charge. Il s'agit d'un nombre entre 1 et 100 dÈfinissant le facteur de charge appliquÈ au serveur cible. |
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È. |
retry | 60 | DÈ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 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 signifie 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' correspond Þ "dÈsactivÈ", 'S' Þ "arrÉtÈ", 'I' Þ "erreurs ignorÈes", 'H' Þ "interruption Þ chaud" et 'E' Þ "erreur". 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". |
timeout | ProxyTimeout |
DÈlai d'attente de la connexion en secondes. Le nombre de secondes pendant lesquelles Apache 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 associÈes du jeu de connexions. Lorsque cette limite est atteinte, la connexion concernÈe ne sera plus utilisÈe ; elle sera ensuite fermÈe au bout d'un certain temps. |
Si l'URL de la directive ProxyPass
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Õtre | DÈfaut | Description |
---|---|---|
lbmethod | byrequests | MÈ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 (Þ partir de la version 2.2.10 du
serveur HTTP Apache), pour effectuer une rÈpartition en
fonction des requÉtes en attente. La valeur par dÈfaut est
byrequests .
|
maxattempts | 1 de moins que le nombre de workers, ou 1 avec un seul worker | Nombre maximum d'Èchecs avant abandon. |
nofailover | Off | Si 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 des noms diffÈrents 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.
|
scolonpathdelim | Off | Si 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 .
|
timeout | 0 | DÈ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 | - | Un code ou une liste de codes d'Ètat HTTP sÈparÈs par des virgules. S'il est dÈfini, ce paramÕtre va forcer le worker dans un Ètat d'erreur lorsque le serveur d'arriÕre-plan retounera un code d'Ètat spÈcifiÈ dans la liste. Le rÈtablissement du worker est le mÉme qu'avec les autres erreurs de worker. Disponible Þ partir de la version 2.2.17 du serveur HTTP Apache. |
forcerecovery | On | Force la rÈcupÈration immÈdiate de tous les membres du
rÈpartiteur sans tenir compte de leur paramÕtre de nouvel essai
si tous les membres du rÈpartiteur sont dans un Ètat d'erreur.
Dans certains cas cependant, un serveur d'arriÕre-plan dÈjÞ
surchargÈ peut voir ses problÕmes s'aggraver si la rÈcupÈration
de tous les membres du rÈpartiteur est forcÈe sans tenir compte
de leur paramÕtre de nouvel essai. Dans ce cas, dÈfinissez ce
paramÕtre Þ Off . Disponible depuis la version
2.2.23 du serveur HTTP Apache.
|
Exemple de configuration d'un rÈpartiteur
ProxyPass /zone-speciale http://special.example.com smax=5 max=10
ProxyPass / balancer://mon-cluster/ stickysession=JSESSIONID|jsessionid nofailover=On
<Proxy balancer://mon-cluster>
BalancerMember ajp://1.2.3.4:8009
BalancerMember ajp://1.2.3.5:8009 loadfactor=20
# Serveur moins puissant ; faites-lui traiter moins de requÉtes,
BalancerMember ajp://1.2.3.6:8009 loadfactor=5
</Proxy>
Configuration d'un serveur cible de rÈserve qui ne sera utilisÈ que si aucun autre serveur cible n'est disponible
ProxyPass / balancer://hotcluster/
<Proxy balancer://hotcluster>
BalancerMember ajp://1.2.3.4:8009 loadfactor=1
BalancerMember ajp://1.2.3.5:8009 loadfactor=2
# La ligne suivante configure le serveur cible de rÈserve
BalancerMember ajp://1.2.3.6:8009 status=+H
ProxySet lbmethod=bytraffic
</Proxy>
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.
Le mot-clÈ optionnel interpolate (disponible depuis
httpd 2.2.9), 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.
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 est de
mÉme Þ l'intÈrieur
d'une section <LocationMatch>
; cependant, ProxyPass
n'interprÕte pas les expressions rationnelles, et dans ce cas, il
est nÈcessaire d'utiliser la directive
ProxyPassMatch
.
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]
.
Description: | Active l'interpolation des variables d'environnement dans les configurations de mandataires inverses |
---|---|
Syntaxe: | ProxyPassInterpolateEnv On|Off |
DÈfaut: | ProxyPassInterpolateEnv Off |
Contexte: | configuration du serveur, 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).
Conservez cette directive Þ off (pour les performances du serveur), sauf si vous en avez rÈellement besoin.
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 du serveur, serveur virtuel, rÈpertoire |
Statut: | Extension |
Module: | mod_proxy |
CompatibilitÈ: | Disponible depuis la version 2.2.5 d'Apache |
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.
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
.
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È.
Lorsque cette directive se situe Þ l'intÈrieur d'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 de mandataire inverse
plus flexible, reportez-vous Þ la directive RewriteRule
avec le drapeau
[P]
.
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.
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 du serveur, serveur virtuel, rÈpertoire |
Statut: | Extension |
Module: | mod_proxy |
Cette directive permet de faire en sorte qu'Apache ajuste l'URL
dans les en-tÉtes Location
,
Content-Location
et URI
des rÈponses de
redirection HTTP. Ceci est essentiel lorsqu'Apache 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 ne rÈÈcrira ni les autres en-tÉtes de rÈponse, ni 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. Le module mod_proxy_html de Nick Kew est un module tiers qui parcourt le code HTML et rÈÈcrit les rÈfÈrences d'URL.
chemin est le nom d'un chemin virtuel local.
url est une URL partielle pour le serveur distant - ils
sont utilisÈs 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 /miroir/foo/ http://backend.example.com/
ProxyPassReverse /miroir/foo/ http://backend.example.com/
ProxyPassReverseCookieDomain backend.example.com public.example.com
ProxyPassReverseCookiePath / /miroir/foo/
ne va pas seulement provoquer la conversion interne d'une requÉte
locale pour http://example.com/miroir/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 : lorsque
http://backend.example.com/bar
est redirigÈ par
celui-ci vers http://backend.example.com/quux
, Apache
corrige ceci en http://example.com/miroir/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È
pass-through (RewriteRule ... [P]
) du module
mod_rewrite
, car elle ne dÈpend pas d'une directive
ProxyPass
correspondante.
Le mot-clÈ optionnel interpolate (disponible depuis
httpd 2.2.9), utilisÈ en combinaison avec la directive
ProxyPassInterpolateEnv
, permet
l'interpolation des variables d'environnement spÈcifiÈes en
utilisant le format ${VARNAME}.
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
correspondra probablement pas Þ ce que vous attendez, car
ProxyPassReverse interprÕte l'expression rationnelle littÈralement
comme un chemin ; si nÈcessaire dans cette situation, spÈcifiez 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>
.
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 du serveur, 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
.
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 du serveur, 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/
..
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 du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_proxy |
CompatibilitÈ: | Disponible depuis la version 2.0.31 d'Apache. |
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.
Description: | Taille du tampon rÈseau pour les connexions mandatÈes HTTP et FTP |
---|---|
Syntaxe: | ProxyReceiveBufferSize octets |
DÈfaut: | ProxyReceiveBufferSize 0 |
Contexte: | configuration du serveur, 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.
ProxyReceiveBufferSize 2048
Description: | Mandataire distant Þ utiliser pour traiter certaines requÉtes |
---|---|
Syntaxe: | ProxyRemote comparaison serveur-distant |
Contexte: | configuration du serveur, 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
. Avec https
,
les requÉtes sont transmises par le mandataire distant via la
mÈthode HTTP CONNECT.
ProxyRemote http://bons-gars.example.com/ http://gars-mirroirs.example.com:8000
ProxyRemote * http://mandataire-intelligent.localdomain
ProxyRemote ftp http://mandataire-ftp.mon-domaine: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.
Description: | Le mandataire distant Þ utiliser pour traiter les requÉtes correspondant Þ une expression rationnelle |
---|---|
Syntaxe: | ProxyRemoteMatch regex serveur-distant |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_proxy |
La directive ProxyRemoteMatch
est
identique Þ la directive ProxyRemote
, Þ l'exception que le
premier argument est une expression
rationnelle Þ mettre en correspondance avec l'URL de la
requÉte.
Description: | Active la fonctionnalitÈ (standard) de mandataire direct |
---|---|
Syntaxe: | ProxyRequests On|Off |
DÈfaut: | ProxyRequests Off |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_proxy |
Cette directive permet d'activer/dÈsactiver la fonctionnalitÈ de
serveur mandataire direct d'Apache. 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 aussi Étre chargÈs dans le
serveur.
mod_proxy_connect
doit Étre activÈ pour pouvoir
mandater (en direct) des sites HTTPS.
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.
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: | rÈpertoire |
Statut: | Extension |
Module: | mod_proxy |
CompatibilitÈ: | ProxySet n'est disponible que depuis la version 2.2 d'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Èfini 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
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.
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 du serveur, 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
.
L'argument Full produit le mÉme effet que l'argument On.
Description: | DÈlai d'attente rÈseau pour les requÉtes mandatÈes |
---|---|
Syntaxe: | ProxyTimeout secondes |
DÈfaut: | Valeur de la directive |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Extension |
Module: | mod_proxy |
CompatibilitÈ: | Disponible depuis la version 2.0.31 d'Apache |
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.
Description: | Information fourni 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 du serveur, 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:
.
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.On
, chaque requÉte ou rÈponse
se verra ajouter une ligne d'en-tÉte Via:
pour le
serveur courant.Full
, chaque ligne d'en-tÉte
Via:
se verra ajouter la version du serveur Apache sous
la forme d'un champ de commentaire Via:
.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È.