mod_proxy.c
pour les versions 1.1.x d'Apache, ou le sous-répertoire modules/proxy
pour la version 1.2 d'Apache, et n'est pas compilé par défaut. Il met en oeuvre un serveur de cache proxy sous HTTP 1.0. Il n'est disponible qu'à partir de la version 1.1 d'Apache. Les questions courantes à propos de la configuration exposées après les descriptions des directives.
Ce module était expérimental dans les versions 1.1.x d'Apache. La stabilité du module mod_proxy est désormais largement acquise dans la version 1.2 d'Apache.
FTP
,
CONNECT
(pour SSL), HTTP/0.9
, et HTTP/1.0
.
Le module peut être configuré pour se connecter à d'autres modules proxy pour ces protocoles, ou éventuellement d'autres.
ProxyRequests Off
Ceci active ou désactive la gestion des requêtes en proxy par Apache. Définir ProxyRequests sur 'off' n'interdit cependant pas d'utiliser la directive ProxyPass.
Elle définit un proxy distant pour ce proxy. <schema> est soit le nom ou un schéma des URLs que le serveur distant supporte, ou une URL partielle pour laquelle le serveur distant devra être utilisé, ou '*' pour indiquer que le serveur distant devra être contacté pour toutes les requêtes. <serveur-distant> est l'URL partielle du serveur distant. Syntaxe :
<remote-server> = <protocole>://<hôte>[:port]<protocole> est le protocole à employer pour contacter le serveur distant ; "http" est le seul protocole supporté par ce module.
Exemple :
ProxyRemote http://goodguys.com/ http://mirrorguys.com:8000 ProxyRemote * http://cleversite.com ProxyRemote ftp http://ftpproxy.mydomain.com:8080Dans le dernier exemple, le proxy reroutera les accès FTP, encapsulées dans une nouvelle requête proxy HTTP, vers un proxy qui est capable de les traiter.
Cette directive permet d'assigner des serveurs distants à une portion d'espace du serveur local ; le serveur local ne se comporte pas comme un serveur proxy au strict sens du terme, mais apparaît comme étant un miroir du serveur distant. <chemin> est le chemin local virtuel ; <url> est l'URL partielle du serveur distant.
Supposez que le serveur local ait pour adresse http://wibble.org/ ; alors
ProxyPass /mirror/foo http://foo.comune requête locale sur l'adresse <http://wibble.org/mirror/foo/bar> sera convertie en interne en une requête proxy sur <http://foo.com/bar>.
La directive ProxyBlock spécifie une liste de mots, d'hôtes et/ou de domaines, séparée par des espaces. HTTP, HTTPS. Toute requête FTP qui correspondent aux mots, hôtes, ou domaines seront bloquées par le serveur proxy. Le module proxy tentera en outre de déterminer les adresses IP des éléments de la liste pouvant être interprétés comme des noms d'hôtes durant la phase de démarrage, et les enregistrera pour les tests futurs. Exemple :
ProxyBlock joes_garage.com some_host.co.uk rocky.wotsamattau.eduLa correspondance avec 'rocky.wotsamattau.edu' serait aussi établie s'il était défini par adresse IP.
Notez que le mot 'wotsamattau' aurait été suffisant pour bloquer 'wotsamattau.edu'.
Notez aussi que
ProxyBlock *bloque les connexions vers tous les sites.
Cette directive n'est utile que pour les serveurs proxy Apache à l'intérieur d'architectures Intranet. Elle spécifie une liste de sous-réseaux, d'adresses IP, de noms d'hôtes et/ou de domaines, séparée par des espaces. Une requête sur les hôtes qui correspondent à l'une au moins de ces définitions sera toujours servi en direct, sans que les requêtes ne soient adressées au(x) serveur(s) proxy ProxyRemote configurés.
Exemple :
ProxyRemote * http://firewall.mycompany.com:81 NoProxy .mycompany.com 192.168.112.0/21Les arguments de la directive NoProxy peuvent être des éléments de liste parmi :
Voir aussi : Apache et DNS
Voir aussi : Apache et DNS
Cette directive n'est utile que pour des serveurs proxy Apache à l'intérieur d'architectures Intranet. Elle spécifie les domaines auxquels le serveur proxy apache appartient par défaut. Si une requête est adressée sans mention de nom de domaine, une réponse de redirection sera renvoyée pointant sur la même adresse, mais suffixée par le Domaine configuré.
Exemple :
ProxyRemote * http://firewall.mycompany.com:81 NoProxy .mycompany.com 192.168.112.0/21 ProxyDomain .mycompany.com
Définit le nom du répertoire qui contient les fichiers caches ; celui-ci doit être ouvert à l'écriture pour l'utilisateur sous lequel tourne le serveur httpd.
CacheSize 5
Indique l'espace de stockage souhaité pour la fonction cache d'Apache, exprimé en Ko (1024 octets). Avant que le proxy ne soit amené à atteindre ce volume, le mécanisme de "nettoyage" supprimera les fichiers même lorsque le volume réellement utilisé est en dessous de cette valeur.
Vérifie le cache toutes les <temps> heures, et détruit les fichiers si l'espace de stockage utilisé dépasse le volume limite défini par CacheSize.
CacheMaxExpire 24
Les documents HTTP qui peuvent être enregistrés en cache y seront stockés au plus <temps> heures sans que le serveur original ne soit contacté. Ainsi, la caducité de ces documents ne pourra être supérieure à <temps> heures. Elle sera encore plus courte si une date de péremption a été inscrite dans le document.
CacheLastModifiedFactor 0.1
Si le serveur HTTP d'origine ne fournit pas de date de péremption pour ses documents, alors Apache en estimera une en utilisant la formule :
expiration = temps_depuis_dernière_modification * <facteur>Par exemple, si le document a été modifié il y a 10 heures, et le <facteur> vaut 0,1, alors la période d'expiration sera fixée à 10*0,1 = 1 heure.
Si le temps d'expiration estimé est supérieur à la limite définie par CacheMaxExpire, alors c'est cette limite qui est prise en compte.
CacheDirLevels 3
La directive CacheDirLevels définit le nombre de niveaux de sous-répertoires dans le cache. Les données cachées le seront jusqu'à cette profondeur en dessous de CacheRoot.
CacheDirLength 1
La directive CacheDirLength le nombre de caractères maximum pour les noms de sous-répertoires dans l'espace de cache.
CacheDefaultExpire 1
Si le document est accédé via un protocole qui ne supporte pas la définition de temps d'expiration, alors Apache utilisera <temps> heures comme délai d'expiration. CacheMaxExpire ne peut outrepasser cette limite.
La directive NoCache spécifie une liste de mots, hôtes et/ou domaines, séparée par des espaces. Les documents HTTP et FTP à accès non sécurisé en provenance d'hôtes pour lesquels une correspondance peut être trouvée avec les mots, noms d'hôtes ou domaines ne seront pas cachés par le serveur proxy. Le module proxy essaiera de déterminer également les adresses IP des éléments de liste pouvant être assimilés à des noms d'hôtes au moment du démarrage, et les gardera en mémoire pour éviter d'avoir à procéder à des résolutions d'adresse au moment des tests. Exemple :
NoCache joes_garage.com some_host.co.uk bullwinkle.wotsamattau.eduLa correspondance avec 'bullwinkle.wotsamattau.edu' sera également établie s'il est référencé par adresse IP.
Notez que le mot 'wotsamattau' suffit pour désigner 'wotsamattau.edu'.
Notez aussi que
NoCache *désactive complètement le cache.
<Directory proxy:*> <Limit GET PUT POST DELETE CONNECT OPTIONS> order deny,allow deny from [machines que vous ne voulez *pas* autoriser, par adresse IP ou par leur nom] allow from [machines que vous voulez autoriser, par adresse IP ou par leur nom] </Limit> </Directory>
Une section <Files> marchera aussi, et est même la seule méthode qui fonctionne pour contrôler toutes les URL possibles dans les versions antérieures à la version 1.2b10.
application/octet-stream bin dms lha lzh exe class tgz taz
ProxyBlock
ou NoCache
, les noms d'hôtes sont translatés en adresses IP par des requêtes DNS, puis enregistrées pour les futurs tests. Ceci peut prendre quelques secondes (ou plus)
suivant la vitesse à laquelle se font les résolutions de noms de domaines.
SOCKS4=yes
dans le fichier Configuration, et de suivre les instructions qui suivent. La fonctionnalité SOCKS5 peut être ajoutée de la même manière (il n'existe pas de règle SOCKS5
pour l'instant), en modifiant la définition EXTRA_LDFLAGS
, ou en construisant Apache
normalement, et en l'exécutant avec le patch runsocks fourni par SOCKS5, si votre système supporte les librairies dynamiques.Certains utilisateurs nous ont fait part de problèmes avec SOCKS en version 4.2 sur Solaris. Le problème a été résolu par la remise à jour en 4.3 de SOCKS.
Souvenez-vous que vous devez également autoriser l'accès sur votre machine proxy Apache en autorisant les connexions sur les ports appropriés dans la configuration du démon SOCKS.
Un serveur proxy Apache situé dans une architecture Intranet doit pouvoir rerouter des requêtes extérieures à travers le firewall d'entrée de la société. Cependant, lorsqu'il doit accéder à des ressources situées dans l'espace Intranet, il peut outrepasser le firewall lorsqu'il accède aux hôtes. La directive NoProxy est utile pour spécifier quels hôtes appartiennent à l'espace Intranet et peuvent être joints directement.
Les utilisateurs d'un Intranet tendent à omettre le nom de domaine local dans leurs requêtes WWW, et requièrent souvent des adresses de la forme "http://unhote/" plutôt que "http://unhote.mon.dom.aine/". Certains serveurs proxy commerciaux laissent passer cette requête et la servent, ce qui implique l'usage d'un nom de domaine local par défaut. Lorsque la directive ProxyDomain est utilisée et le serveur est configuré pour assurer le service proxy, Apache peut répondre par une redirection et renvoyer le client sur une adresse correcte, entièrement qualifiée. C'est une méthode préférable qui permet à l'utilisateur de mettre à jour les "favoris" avec l'adresse complète de la ressource.