Blame docs/manual/howto/reverse_proxy.html.fr.utf8

Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
Packit 90a5c9
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
Packit 90a5c9
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
              This file is generated from xml source: DO NOT EDIT
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
      -->
Packit 90a5c9
<title>Guide de configuration d'un mandataire inverse - Serveur HTTP Apache Version 2.4</title>
Packit 90a5c9
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
Packit 90a5c9
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
Packit 90a5c9
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
Packit 90a5c9
<script src="../style/scripts/prettify.min.js" type="text/javascript">
Packit 90a5c9
</script>
Packit 90a5c9
Packit 90a5c9
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
Packit 90a5c9
<body id="manual-page">
Packit 90a5c9

Modules | Directives | FAQ | Glossaire | Plan du site

Packit 90a5c9

Serveur HTTP Apache Version 2.4

Packit 90a5c9
Packit 90a5c9
<-
Packit 90a5c9
Packit 90a5c9
Apache > Serveur HTTP > Documentation > Version 2.4 > Recettes / Tutoriels

Guide de configuration d'un mandataire inverse

Packit 90a5c9
Packit 90a5c9

Langues Disponibles:  en  |

Packit 90a5c9
 fr 

Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
    

En plus de ses fonctions de serveur web "basique", à savoir fournir du

Packit 90a5c9
    contenu statique et dynamique à l'utilisateur, Apache httpd (comme la
Packit 90a5c9
    plupart des autres serveurs web) peut aussi assurer les fonctions de serveur
Packit 90a5c9
    mandataire inverse, connu aussi sous le nom de serveur "passerelle".

Packit 90a5c9
Packit 90a5c9
    

Dans un tel scénario, httpd ne génère et n'héberge pas lui-même les

Packit 90a5c9
    données, le contenu étant en général obtenu à partir d'un ou plusieurs serveurs
Packit 90a5c9
    d'arrière-plan qui n'ont normalement aucune connexion directe avec le réseau
Packit 90a5c9
    externe. Lorsque httpd reçoit une requête en provenance d'un client, la
Packit 90a5c9
    requête proprement dite est mandatée vers un de ces serveurs
Packit 90a5c9
    d'arrière-plan qui traite la requête, génère le contenu et l'envoie à httpd,
Packit 90a5c9
    ce dernier générant la véritable réponse HTTP à destination du client.

Packit 90a5c9
Packit 90a5c9
    

De nombreuses raisons peuvent vous motiver à utiliser cette

Packit 90a5c9
    fonctionnalité, mais elles sont souvent du domaine de la sécurité, de
Packit 90a5c9
    la haute disponibilité, de la répartition de charge et de
Packit 90a5c9
    l'authentification/autorisation centralisée. Il est alors indispensable que
Packit 90a5c9
    l'organisation, la conception et l'architecture de l'infrastructure
Packit 90a5c9
    d'arrière-plan (les serveurs qui traitent au sens propre les requêtes) soient
Packit 90a5c9
    isolées et protégées de l'extérieur ; vu du client, le serveur mandataire
Packit 90a5c9
    inverse est le seul serveur accessible pouvant lui fournir du
Packit 90a5c9
    contenu.

Packit 90a5c9
Packit 90a5c9
    

Voici un exemple typique d'implémentation de cette fonctionnalité :

Packit 90a5c9
    

reverse-proxy-arch

Packit 90a5c9
Packit 90a5c9
  
Packit 90a5c9
Packit 90a5c9
  • Mandatement inverse simple
  • Packit 90a5c9
  • Clusters et Balancers
  • Packit 90a5c9
  • Configuration du Balancer et des BalancerMembers
  • Packit 90a5c9
  • Gestion des indisponibilités (Failover)
  • Packit 90a5c9
  • Gestion du répartiteur de charge
  • Packit 90a5c9
  • Vérification dynamique du bon fonctionnement d'un serveur
  • Packit 90a5c9
        d'arrière-plan
    Packit 90a5c9
  • Drapeaux d'état d'un membre du groupe de répartition de charge
  • Packit 90a5c9

    Voir aussi

    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    Mandataire inverse

    Packit 90a5c9
      
    Packit 90a5c9
      
    Packit 90a5c9
      
    top
    Packit 90a5c9
    Packit 90a5c9

    Mandatement inverse simple

    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        

    Packit 90a5c9
          La directive ProxyPass permet de
    Packit 90a5c9
          rediriger les requêtes entrantes vers un serveur d'arrière-plan (ou un
    Packit 90a5c9
          cluster de serveurs plus connu sous le nom de groupe
    Packit 90a5c9
          Balancer). Dans cet exemple le plus simple, toutes les
    Packit 90a5c9
          requêtes ("/") sont redirigées vers un serveur d'arrière-plan
    Packit 90a5c9
          unique :
    Packit 90a5c9
        

    Packit 90a5c9
    Packit 90a5c9
        
    ProxyPass "/"  "http://www.example.com/"
    Packit 90a5c9
    Packit 90a5c9
    Packit 90a5c9
        

    Packit 90a5c9
          Pour être sur que cette redirection soit effectuée et que les en-têtes
    Packit 90a5c9
          Location: générés par le serveur d'arrière-plan soient
    Packit 90a5c9
          modifiés pour pointer vers le mandataire inverse, et non vers le serveur
    Packit 90a5c9
          d'arrière-plan, la directive ProxyPassReverse est souvent requise :
    Packit 90a5c9
        

    Packit 90a5c9
    Packit 90a5c9
        
    ProxyPass "/"  "http://www.example.com/"
    Packit 90a5c9
    ProxyPassReverse "/"  "http://www.example.com/"
    Packit 90a5c9
    Packit 90a5c9
    Packit 90a5c9
        

    Seules des URIs spécifiques peuvent être mandatées, comme le montre

    Packit 90a5c9
        l'exemple suivant :

    Packit 90a5c9
    Packit 90a5c9
        
    ProxyPass "/images"  "http://www.example.com/"
    Packit 90a5c9
    ProxyPassReverse "/images"  "http://www.example.com/"
    Packit 90a5c9
    Packit 90a5c9
    Packit 90a5c9
        

    Dans l'exemple précédent, si le chemin d'une requête commence par

    Packit 90a5c9
        /images, elle sera redirigée vers le serveur d'arrière-plan
    Packit 90a5c9
        spécifié ; dans le cas contraire, elle sera traitée localement.
    Packit 90a5c9
        

    Packit 90a5c9
      
    top
    Packit 90a5c9
    Packit 90a5c9

    Clusters et Balancers

    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        

    Packit 90a5c9
          Utiliser un serveur d'arrière-plan unique n'est cependant pas une solution
    Packit 90a5c9
          idéale car ce dernier peut devenir indisponible ou surchargé, et le
    Packit 90a5c9
          mandatement inverse vers ce serveur ne présente alors plus aucun avantage.
    Packit 90a5c9
          La solution réside dans la définition d'un groupe de serveurs
    Packit 90a5c9
          d'arrière-plan qui vont se partager le traitement des requêtes via un
    Packit 90a5c9
          mécanisme de répartition de charge et de gestion des indisponibilités pris
    Packit 90a5c9
          en charge par le mandataire. Ce groupe de répartition est plus connu sous le nom de
    Packit 90a5c9
          cluster, mais dans la terminologie d'Apache httpd, on utilise
    Packit 90a5c9
          plutôt le terme de balancer. Un balancer se définit en
    Packit 90a5c9
          utilisant les directives <Proxy> et BalancerMember comme suit :
    Packit 90a5c9
        

    Packit 90a5c9
    Packit 90a5c9
        
    <Proxy balancer://myset>
    Packit 90a5c9
        BalancerMember http://www2.example.com:8080
    Packit 90a5c9
        BalancerMember http://www3.example.com:8080
    Packit 90a5c9
        ProxySet lbmethod=bytraffic
    Packit 90a5c9
    </Proxy>
    Packit 90a5c9
    Packit 90a5c9
    ProxyPass "/images/"  "balancer://myset/"
    Packit 90a5c9
    ProxyPassReverse "/images/"  "balancer://myset/"
    Packit 90a5c9
    Packit 90a5c9
    Packit 90a5c9
        

    Packit 90a5c9
          Le protocole balancer:// indique à httpd que l'on souhaite
    Packit 90a5c9
          créer un balancer nommé myset. Ce balancer comporte deux serveurs
    Packit 90a5c9
          d'arrière-plan référencés dans la terminologie httpd sous le nom de
    Packit 90a5c9
          BalancerMembers. Avec cet exemple, toute requête dont le chemin
    Packit 90a5c9
          commence par /images sera mandatée vers un des deux
    Packit 90a5c9
          serveurs d'arrière-plan. La directive ProxySet définit ici pour le balancer
    Packit 90a5c9
          myset un algorithme de
    Packit 90a5c9
          répartition de charge basé sur le trafic entrées/sorties.
    Packit 90a5c9
        

    Packit 90a5c9
    Packit 90a5c9
        

    Remarque

    Packit 90a5c9
          

    Packit 90a5c9
          	Les BalancerMembers sont aussi souvent référencés sous le terme
    Packit 90a5c9
    	workers.
    Packit 90a5c9
          

    Packit 90a5c9
       
    Packit 90a5c9
    Packit 90a5c9
      
    top
    Packit 90a5c9
    Packit 90a5c9

    Configuration du Balancer et des BalancerMembers

    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        

    Packit 90a5c9
          Vous pouvez configurer de manière détaillée les balancers et
    Packit 90a5c9
          workers via les nombreux paramètres de la directive ProxyPass. Par exemple, si vous souhaitez
    Packit 90a5c9
          que http://www3.example.com:8080 traite avec un facteur 3 le
    Packit 90a5c9
          trafic avec un timeout d'une seconde, utilisez la configuration suivante :
    Packit 90a5c9
        

    Packit 90a5c9
    Packit 90a5c9
        
    <Proxy balancer://myset>
    Packit 90a5c9
        BalancerMember http://www2.example.com:8080
    Packit 90a5c9
        BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1
    Packit 90a5c9
        ProxySet lbmethod=bytraffic
    Packit 90a5c9
    </Proxy>
    Packit 90a5c9
    Packit 90a5c9
    ProxyPass "/images"  "balancer://myset/"
    Packit 90a5c9
    ProxyPassReverse "/images"  "balancer://myset/"
    Packit 90a5c9
    Packit 90a5c9
    Packit 90a5c9
      
    top
    Packit 90a5c9
    Packit 90a5c9

    Gestion des indisponibilités (Failover)

    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        

    Packit 90a5c9
          Vous pouvez aussi définir finement des scénarios pour les cas
    Packit 90a5c9
          d'indisponibilité d'un ou plusieurs serveurs d'arrière-plan en spécifiant
    Packit 90a5c9
          quels serveurs doivent alors prendre le relai. Dans l'exemple suivant,
    Packit 90a5c9
          trois scénarios sont envisagés :
    Packit 90a5c9
        

    Packit 90a5c9
        
      Packit 90a5c9
            
    1. Packit 90a5c9
              http://spare1.example.com:8080 et
      Packit 90a5c9
              http://spare2.example.com:8080 ne sont sollicités que si
      Packit 90a5c9
      	http://www2.example.com:8080 ou
      Packit 90a5c9
      	http://www3.example.com:8080 est indisponible (un serveur
      Packit 90a5c9
      	de remplacement sera utilisé à la place d'un membre indisponible du même
      Packit 90a5c9
      	jeu de serveurs cibles).
      Packit 90a5c9
            
      Packit 90a5c9
            
    2. Packit 90a5c9
              http://hstandby.example.com:8080 n'est sollicité que si
      Packit 90a5c9
      	tous les autres serveurs cibles du jeu de serveurs 0 sont
      Packit 90a5c9
      	indisponibles.
      Packit 90a5c9
            
      Packit 90a5c9
            
    3. Packit 90a5c9
              Les serveurs http://bkup1.example.com:8080 et
      Packit 90a5c9
      	http://bkup2.example.com:8080 du jeu 1 ne seront sollicités que si
      Packit 90a5c9
      	tous les serveurs du jeu 0, tous les serveurs de
      Packit 90a5c9
      	remplacement et tous les serveurs de standby sont indisponibles.
      Packit 90a5c9
            
      Packit 90a5c9
          
      Packit 90a5c9
          

      Packit 90a5c9
            Il est ainsi possible de définir un ou plusieurs serveurs de remplacement
      Packit 90a5c9
            ou de standby pour chaque jeu de serveurs du répartiteur de charge.
      Packit 90a5c9
          

      Packit 90a5c9
      Packit 90a5c9
          
      <Proxy balancer://myset>
      Packit 90a5c9
          BalancerMember http://www2.example.com:8080
      Packit 90a5c9
          BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1
      Packit 90a5c9
          BalancerMember http://spare1.example.com:8080 status=+R
      Packit 90a5c9
          BalancerMember http://spare2.example.com:8080 status=+R
      Packit 90a5c9
          BalancerMember http://hstandby.example.com:8080 status=+H
      Packit 90a5c9
          BalancerMember http://bkup1.example.com:8080 lbset=1
      Packit 90a5c9
          BalancerMember http://bkup2.example.com:8080 lbset=1
      Packit 90a5c9
          ProxySet lbmethod=byrequests
      Packit 90a5c9
      </Proxy>
      Packit 90a5c9
      Packit 90a5c9
      ProxyPass "/images/"  "balancer://myset/"
      Packit 90a5c9
      ProxyPassReverse "/images/"  "balancer://myset/"
      Packit 90a5c9
      Packit 90a5c9
      Packit 90a5c9
          

      Packit 90a5c9
            Les serveurs de remplacement à chaud remplacent les serveurs indisponibles
      Packit 90a5c9
            du même jeu de serveurs du répartiteur de charge. Un serveur est
      Packit 90a5c9
            considéré comme indisponible s'il est en maintenance, arrêté ou en erreur.
      Packit 90a5c9
            Les serveurs de standby à chaud sont utilisés si tous les serveurs et
      Packit 90a5c9
            serveurs de remplacement du jeu de serveurs du répartiteur de charge sont
      Packit 90a5c9
            indisponibles. Les jeux de serveurs du répartiteur de charge (avec leurs
      Packit 90a5c9
            serveurs de standby et de remplacement à chaud respectifs) sont toujours
      Packit 90a5c9
            sollicités dans l'ordre du plus bas lbset vers le plus haut.
      Packit 90a5c9
          

      Packit 90a5c9
      Packit 90a5c9
        
      top
      Packit 90a5c9
      Packit 90a5c9

      Gestion du répartiteur de charge

      Packit 90a5c9
          
      Packit 90a5c9
      Packit 90a5c9
          

      Packit 90a5c9
           L'application balancer-manager fournie avec le mandataire inverse
      Packit 90a5c9
           d'Apache httpd en est un des outils les plus utiles. Comme
      Packit 90a5c9
           mod_status, balancer-manager affiche la
      Packit 90a5c9
           configuration et l'activité actuelles des balancers actifs. L'affichage de
      Packit 90a5c9
           ces informations n'est cependant pas sa seule fonction ; il permet aussi de
      Packit 90a5c9
           modifier la plupart d'entre elles et même d'ajouter des membres au groupe
      Packit 90a5c9
           de répartition de charge en temps réel. Pour activer ces fonctionnalités,
      Packit 90a5c9
           vous devez ajouter les lignes suivantes à votre fichier de configuration : 
      Packit 90a5c9
          

      Packit 90a5c9
      Packit 90a5c9
          
      <Location "/balancer-manager">
      Packit 90a5c9
          SetHandler balancer-manager
      Packit 90a5c9
          Require host localhost
      Packit 90a5c9
      </Location>
      Packit 90a5c9
      Packit 90a5c9
      Packit 90a5c9
          

      Avertissement

      Packit 90a5c9
            

      N'activez le balancer-manager que si vous avez déjà sécurisé votre serveur.

      Packit 90a5c9
            Assurez-vous en particulier que l'accès à l'URL soit fortement restreint.

      Packit 90a5c9
          
      Packit 90a5c9
      Packit 90a5c9
          

      Packit 90a5c9
            Lorsque vous accédez au serveur mandataire avec une adresse du style
      Packit 90a5c9
            http://rproxy.example.com/balancer-manager/, la page suivante
      Packit 90a5c9
            s'affiche :
      Packit 90a5c9
          

      Packit 90a5c9
          

      balancer-manager page

      Packit 90a5c9
      Packit 90a5c9
          

      Packit 90a5c9
            Ce formulaire permet à l'administrateur de modifier certains paramètres,
      Packit 90a5c9
            de désactiver ou d'ajouter certains serveurs d'arrière-plan, et de
      Packit 90a5c9
            modifier les règles de répartition de charge. Par exemple, si on clique
      Packit 90a5c9
            sur le répartiteur, la page suivante s'affiche : 
      Packit 90a5c9
          

      Packit 90a5c9
          

      balancer-manager page

      Packit 90a5c9
      Packit 90a5c9
          

      Packit 90a5c9
            Si on clique sur un membre du groupe de répartition de charge, la page
      Packit 90a5c9
            suivante s'affiche :
      Packit 90a5c9
          

      Packit 90a5c9
          

      balancer-manager page

      Packit 90a5c9
      Packit 90a5c9
          

      Packit 90a5c9
            Si vous souhaitez que ces modifications soient conservées après un
      Packit 90a5c9
            redémarrage du serveur, assurez-vous que la directive BalancerPersist soit définie à On.
      Packit 90a5c9
          

      Packit 90a5c9
      Packit 90a5c9
        
      top
      Packit 90a5c9
      Packit 90a5c9

      Vérification dynamique du bon fonctionnement d'un serveur

      Packit 90a5c9
          d'arrière-plan
      Packit 90a5c9
          
      Packit 90a5c9
      Packit 90a5c9
          

      Packit 90a5c9
            Avant que le mandataire httpd ne fasse appel à un serveur d'arrière-plan, il
      Packit 90a5c9
            peut "tester" si ce dernier est disponible en définissant le
      Packit 90a5c9
            paramètre ping de ce serveur via la directive ProxyPass. Cependant, il est souvent plus
      Packit 90a5c9
            judicieux de vérifier le bon fonctionnement d'un serveur hors
      Packit 90a5c9
            bande et de manière dynamique via le module
      Packit 90a5c9
            mod_proxy_hcheck d'Apache httpd.
      Packit 90a5c9
          

      Packit 90a5c9
      Packit 90a5c9
        
      top
      Packit 90a5c9
      Packit 90a5c9

      Drapeaux d'état d'un membre du groupe de répartition de charge

      Packit 90a5c9
          
      Packit 90a5c9
      Packit 90a5c9
          

      Packit 90a5c9
            balancer-manager permet d'afficher et de modifier l'état d'un
      Packit 90a5c9
            membre du groupe de répartition de charge. Les différents états et leurs
      Packit 90a5c9
            significations sont les suivants :
      Packit 90a5c9
          

      Packit 90a5c9
            
      Packit 90a5c9
            	DrapeauSigleDescription
      Packit 90a5c9
            	 OkLe serveur est disponible
      Packit 90a5c9
            	 InitLe serveur a été initialisé
      Packit 90a5c9
              DDisLe serveur est
      Packit 90a5c9
      	désactivé et n'accepte aucune requête ; il sera retesté automatiquement.
      Packit 90a5c9
              SStopLe serveur a été
      Packit 90a5c9
      	arrêté par l'administrateur ; il n'accepte aucune requête et il ne sera
      Packit 90a5c9
      	pas retesté automatiquement.
      Packit 90a5c9
              IIgnLes erreurs
      Packit 90a5c9
      	concernant ce serveur sont ignorées et il sera donc toujours considéré
      Packit 90a5c9
      	comme disponible.
      Packit 90a5c9
      	RSparLe serveur cible sert de remplaçant à
      Packit 90a5c9
      	 chaud. Lorsqu'un serveur cible avec un lbset donné est inutilisable
      Packit 90a5c9
      	 (maintenance, arrêt, en erreur, etc...), un serveur de remplacement à
      Packit 90a5c9
      	 chaud libre de même lbset sera utilisé à sa place. Les remplaçants à
      Packit 90a5c9
      	 chaud permettent de s'assurer qu'un nombre déterminé de serveurs cibles
      Packit 90a5c9
      	 sera toujours disponible pour un répartiteur de charge.
      Packit 90a5c9
              HStbyLe serveur est en
      Packit 90a5c9
      	mode hot-standby et ne sera donc utilisé que si aucun autre serveur ou
      Packit 90a5c9
      	serveur de remplacement	n'est disponible dans le jeu de serveurs du
      Packit 90a5c9
      	répartiteur de charge.
      Packit 90a5c9
              EErrLe serveur est en
      Packit 90a5c9
      	erreur, en général suite à un test préalable à une requête ; aucune
      Packit 90a5c9
      	requête ne lui sera soumise, mais il sera retesté en fonction de la
      Packit 90a5c9
      	valeur de son paramètre retry.
      Packit 90a5c9
              NDrnLe serveur est en
      Packit 90a5c9
      	mode drain ; il n'acceptera de requêtes que dans le cadre des sessions
      Packit 90a5c9
      	persistantes qui lui sont réservées et ignorera toutes les autres.
      Packit 90a5c9
              CHcFlLe serveur a échoué
      Packit 90a5c9
      	au test dynamique de bon fonctionnement et ne sera utilisé que lorsqu'il
      Packit 90a5c9
      	aura réussi un test ultérieur.
      Packit 90a5c9
            
      Packit 90a5c9
        
      Packit 90a5c9
      Packit 90a5c9

      Langues Disponibles:  en  |

      Packit 90a5c9
       fr 

      Packit 90a5c9
      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 again 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 Freenode, or sent to our mailing lists.
      Packit 90a5c9
      <script type="text/javascript">
      Packit 90a5c9
      var comments_shortname = 'httpd';
      Packit 90a5c9
      var comments_identifier = 'http://httpd.apache.org/docs/2.4/howto/reverse_proxy.html';
      Packit 90a5c9
      (function(w, d) {
      Packit 90a5c9
          if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
      Packit 90a5c9
              d.write('
      <\/div>');
      Packit 90a5c9
              var s = d.createElement('script');
      Packit 90a5c9
              s.type = 'text/javascript';
      Packit 90a5c9
              s.async = true;
      Packit 90a5c9
              s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
      Packit 90a5c9
              (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
      Packit 90a5c9
          }
      Packit 90a5c9
          else { 
      Packit 90a5c9
              d.write('
      Comments are disabled for this page at the moment.<\/div>');
      Packit 90a5c9
          }
      Packit 90a5c9
      })(window, document);
      Packit 90a5c9
      //--></script>
      Packit 90a5c9

      Copyright 2018 The Apache Software Foundation.
      Autorisé sous Apache License, Version 2.0.

      Packit 90a5c9

      Modules | Directives | FAQ | Glossaire | Plan du site

      <script type="text/javascript">
      Packit 90a5c9
      if (typeof(prettyPrint) !== 'undefined') {
      Packit 90a5c9
          prettyPrint();
      Packit 90a5c9
      }
      Packit 90a5c9
      //--></script>
      Packit 90a5c9
      </body></html>