<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>Aperçu des nouvelles fonctionnalités de la version
2.2 du serveur HTTP Apache - Serveur HTTP Apache Version 2.4</title>
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<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" />
<script src="./style/scripts/prettify.min.js" type="text/javascript">
</script>

<link href="./images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p>
<p class="apache">Serveur HTTP Apache Version 2.4</p>
<img alt="" src="./images/feather.png" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.4</a></div><div id="page-content"><div id="preamble"><h1>Aperçu des nouvelles fonctionnalités de la version
2.2 du serveur HTTP Apache</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="./en/new_features_2_2.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="./fr/new_features_2_2.html" title="Français">&nbsp;fr&nbsp;</a> |
<a href="./ko/new_features_2_2.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./pt-br/new_features_2_2.html" hreflang="pt-br" rel="alternate" title="Português (Brasil)">&nbsp;pt-br&nbsp;</a> |
<a href="./tr/new_features_2_2.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
</div>

  <p>Ce document décrit quelques uns des changements principaux entre
     les versions 2.0 et 2.2 du serveur HTTP Apache. Pour les
     nouvelles fonctionnalités ajoutées depuis la version 1.3, se
     référer au document
     <a href="new_features_2_0.html">2.0 new features</a>.</p>
</div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#core">Améliorations du système de base</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#module">Améliorations des modules</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#programs">Améliorations des programmes</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#developer">Changements pour le développeur de module</a></li>
</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="core" id="core">Améliorations du système de base</a></h2>
    
    <dl>

      <dt>Authn/Authz</dt>
      <dd>Les modules d'authentification et d'autorisation intégrés
	ont été refondus. Le nouveau module
	mod_authn_alias (supprimé dans la version 2.3/2.4) permet de
	simplifier considérablement certaines configurations d'authentification.
          Voir <a href="#module">modification des noms de modules</a>,
	  et
	  <a href="#developer">les changements pour le développeur</a>
	  pour plus d'informations sur les conséquences de ces
	  changements pour les utilisateurs et les développeurs de
	  modules.</dd>

      <dt>Mise en cache</dt>
      <dd><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>, <code class="module"><a href="./mod/mod_cache_disk.html">mod_cache_disk</a></code>, et
          mod_mem_cache (supprimés dans la version 2.3/2.4) ont subi de nombreuses
	  modifications, et l'on considère qu'ils ont maintenant atteint
	  un degré de qualité suffisant pour leur mise en production. Le programme
	  <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code> a été ajouté afin de rendre
	  plus propre la configuration du module
	  <code class="module"><a href="./mod/mod_cache_disk.html">mod_cache_disk</a></code>.</dd>

      <dt>Configuration</dt>
      <dd>L'agencement de la configuration par défaut a été simplifié
      	et modularisé. Les portions de configuration qui peuvent être
	utilisées pour activer des fonctionnalités courantes sont
	maintenant intégrées à Apache, et peuvent être facilement
	ajoutées à la configuration principale du serveur.</dd>

      <dt>Arrêt en douceur</dt>
      <dd>Les modules MPM <code class="module"><a href="./mod/prefork.html">prefork</a></code>,
        <code class="module"><a href="./mod/worker.html">worker</a></code> et <code class="module"><a href="./mod/event.html">event</a></code> permettent
	maintenant l'arrêt en douceur de <code class="program"><a href="./programs/httpd.html">httpd</a></code>
          au moyen du signal
          <a href="stopping.html#gracefulstop"><code>graceful-stop</code></a>.
	  La directive <code class="directive"><a href="./mod/mpm_common.html#gracefulshutdowntimeout">GracefulShutdownTimeout</a></code> a été ajoutée dans le but
	  de spécifier un délai optionnel, après lequel
          <code class="program"><a href="./programs/httpd.html">httpd</a></code> s'arrêtera quel que soit le statut
          des requêtes en cours.</dd>

      <dt>Mise en oeuvre du proxy</dt>
      <dd>Le nouveau module <code class="module"><a href="./mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> fournit
          des services de répartition de charge (load balancing) pour le
	  module <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code>.
          Le nouveau module <code class="module"><a href="./mod/mod_proxy_ajp.html">mod_proxy_ajp</a></code> ajoute le
	  support pour le
          <code>Protocole JServ de Apache version 1.3</code> qu'utilise
          <a href="http://tomcat.apache.org/">Apache Tomcat</a>.</dd>

      <dt>Mise à jour de la bibliothèque des expressions rationnelles</dt>
      <dd>La version 5.0 de la
          <a href="http://www.pcre.org/">Perl Compatible Regular Expression
          Library</a> (PCRE) est maintenant disponible.
	  <code class="program"><a href="./programs/httpd.html">httpd</a></code> peut être configuré pour utiliser une
	  PCRE choisie en passant l'option <code>--with-pcre</code> au
	  script configure.</dd>

      <dt>Filtrage intelligent</dt>
      <dd>Le module <code class="module"><a href="./mod/mod_filter.html">mod_filter</a></code> permet la configuration
          dynamique de la chaîne de filtrage en sortie. Il permet
	  d'insérer des filtres conditionnels basés sur toute
	  requête, en-tête de réponse ou variable
	  d'environnement, et fait table rase des problèmes de dépendances
	  et d'ordonnancement rencontrés avec l'architecture 2.0.</dd>

      <dt>Support des gros fichiers</dt>
      <dd><code class="program"><a href="./programs/httpd.html">httpd</a></code> supporte maintenant les fichiers d'une taille supérieure
      à 2GB sur les systèmes 32 bits UNIX modernes.  Le support des
      corps de requête d'une taille supérieure à 2GB a aussi été
      ajouté.</dd>

      <dt>Module MPM Event</dt>
      <dd>Le module MPM <code class="module"><a href="./mod/event.html">event</a></code> utilise un thread séparé
      	pour gérer les requêtes "Keep alive" et accepter des connexions.
	Les requêtes "Keep alive" requéraient traditionnellement un
	processus httpd dédié pour leur gestion. Ce processus dédié
	ne pouvait plus être réutilisé jusqu'à ce que le délai "Keep Alive"
          soit écoulé.</dd>

      <dt>Support des bases de données SQL</dt>
      <dd>Le module <code class="module"><a href="./mod/mod_dbd.html">mod_dbd</a></code>, associé à l'environnement
      	<code>apr_dbd</code>, fournit le support SQL direct aux modules
	qui en ont besoin.  Supporte la mise en commun des connexions
          dans les modules MPM threadés.</dd>

    </dl>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="module" id="module">Améliorations des modules</a></h2>
    
    <dl>
      <dt>Authn/Authz</dt>
      <dd>Les modules du répertoire aaa ont été renommés et fournissent
          un support amélioré pour la méthode d'authentification <strong>digest</strong>.  Par exemple, <code>mod_auth</code>
          est maintenant scindé en deux modules : <code class="module"><a href="./mod/mod_auth_basic.html">mod_auth_basic</a></code> et
          <code class="module"><a href="./mod/mod_authn_file.html">mod_authn_file</a></code>; <code>mod_auth_dbm</code> s'appelle maintenant
          <code class="module"><a href="./mod/mod_authn_dbm.html">mod_authn_dbm</a></code>; <code>mod_access</code> a été renommé en
          <code class="module"><a href="./mod/mod_authz_host.html">mod_authz_host</a></code>.  Est également apparu le nouveau module
          mod_authn_alias (supprimé dans la version 2.3/2.4) qui simplifie
          certaines configurations d'authentification.
      </dd>

      <dt><code class="module"><a href="./mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></dt>
      <dd>Ce module est un portage de la version 2.0 du module
          <code>mod_auth_ldap</code> vers la version 2.2 du framework
	  <code>Authn/Authz</code>.
	  Les nouvelles fonctionnalités comprennent l'utilisation des valeurs
	  d'attributs LDAP et des filtres de recherche avancés dans la
          directive <code class="directive"><a href="./mod/mod_authz_core.html#require">Require</a></code>.</dd>

      <dt><code class="module"><a href="./mod/mod_authz_owner.html">mod_authz_owner</a></code></dt>
	<dd>Un nouveau module qui autorise l'accès à un fichier
	en fonction de son propriétaire dans le système de
	fichiers</dd>

	<dt><code class="module"><a href="./mod/mod_version.html">mod_version</a></code></dt>
	<dd>Un nouveau module qui permet d'activer des blocs de
	configuration en fonction de la version du serveur en cours
	d'exécution.</dd>

      <dt><code class="module"><a href="./mod/mod_info.html">mod_info</a></code></dt>
      <dd>Un nouvel argument <code>?config</code> a été ajouté, qui permettra d'afficher
          les directives de configuration telles qu'elles sont interprétées
	  par Apache, y compris le nom de fichier et le numéro de ligne.
	  Le module montre aussi l'ordre des points d'entrée de traitement d'une
	  requête (request hooks) ainsi que des informations de construction
	  supplémentaires, d'une manière similaire à <code>httpd -V</code>.</dd>

      <dt><code class="module"><a href="./mod/mod_ssl.html">mod_ssl</a></code></dt>
      
      <dd>Le support de la <a href="http://www.ietf.org/rfc/rfc2817.txt">RFC 2817</a> a été ajouté, ce qui permet de passer d'une
	connexion en clair au chiffrement TLS.</dd>

      <dt><code class="module"><a href="./mod/mod_imagemap.html">mod_imagemap</a></code></dt>
      <dd><code>mod_imap</code> a été renommé en <code class="module"><a href="./mod/mod_imagemap.html">mod_imagemap</a></code> afin
      d'éviter une confusion pour les utilisateurs.</dd>
    </dl>

  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="programs" id="programs">Améliorations des programmes</a></h2>
    
    <dl>
      <dt><code class="program"><a href="./programs/httpd.html">httpd</a></code></dt>
      <dd>Une nouvelle option de ligne de commande <code>-M</code>
     a été ajoutée, qui fournit la liste de tous les modules chargés
     en fonction de la configuration réelle. À la différence de l'option
     <code>-l</code>, cette liste inclut les Objets Dynamiques Partagés
     (DSOs) chargés par l'intermédiaire du module
     <code class="module"><a href="./mod/mod_so.html">mod_so</a></code>.</dd>
      <dt><code class="program"><a href="./programs/httxt2dbm.html">httxt2dbm</a></code></dt>
      <dd>Un nouveau programme servant à générer des fichiers dbm à partir
      d'une source au format texte, à utiliser avec la directive
      <code class="directive"><a href="./mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>
          et le type de mise en correspondance <code>dbm</code>.</dd>
    </dl>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="developer" id="developer">Changements pour le développeur de module</a></h2>
    
    <dl>
      <dt><a class="glossarylink" href="./glossary.html#apr" title="voir glossaire">APR</a> 1.0 API</dt>

      <dd>Apache 2.2 utilise l'API APR 1.0.  Toutes les fonctions et
      symboles obsolètes ont été supprimés du code de <code>APR</code> et
          <code>APR-Util</code>. Pour plus de détails, consultez le
          <a href="http://apr.apache.org/">site web d'APR</a>.</dd>

      <dt>Authn/Authz</dt>
      <dd>Les modules d'authentification et d'autorisation intégrés ont
          été renommés de la manière suivante:
          <ul>
          <li><code>mod_auth_*</code>  -&gt; Modules qui implémentent un mécanisme
	  	d'authentification HTTP</li>
          <li><code>mod_authn_*</code> -&gt; Modules qui fournissent un dispositif
	  	d'authentification en arrière-plan</li>
          <li><code>mod_authz_*</code> -&gt; Modules qui implémentent l'autorisation (ou l'accès)</li>
          <li><code>mod_authnz_*</code> -&gt; Modules qui implémentent à la fois
	  l'authentification &amp; l'autorisation</li>
          </ul>
	  L'organisation des méthodes d'authentification a également été revue, ce qui va simplifier
	  grandement l'ajout de nouvelles méthodes d'authentification.</dd>

      <dt>Journalisation des erreurs de connexion</dt>

      <dd>Une nouvelle fonction a été ajoutée, <code>ap_log_cerror</code>,
      afin de pouvoir enregistrer les erreurs qui surviennent au cours de
      la connexion du client.  Une fois enregistré, le message inclut l'adresse IP du client.</dd>

      <dt>Ajout d'une portion de code pour la vérification de la configuration</dt>

      <dd>Un nouvel élément de traitement a été ajouté, <code>test_config</code>,
      afin d'aider les modules qui ne veulent exécuter un code spécial
      que si l'utilisateur passe le paramètre <code>-t</code> à
      <code class="program"><a href="./programs/httpd.html">httpd</a></code>.</dd>

      <dt>Définition de la taille de la pile pour les modules MPM en processus légers</dt>

      <dd>Une nouvelle directive a été ajoutée, <code class="directive"><a href="./mod/mpm_common.html#threadstacksize">ThreadStackSize</a></code>
     afin de définir la taille de la pile pour tous les modules MPM en processus légers (modules threadés).
     Ceci s'avère nécessaire pour certains modules tiers sur des plateformes
     dont la taille de la pile des threads par défaut est
     trop petite.</dd>

      <dt>Gestion de protocole pour les filtres en sortie</dt>

      <dd>Par le passé, chaque filtre devait s'assurer que les en-têtes de
      réponse corrects étaient générés dans la mesure où il les affectait.
      Les filtres peuvent maintenant déléguer la gestion courante du
      protocole au module
          <code class="module"><a href="./mod/mod_filter.html">mod_filter</a></code>, à l'aide des appels
          <code>ap_register_output_filter_protocol</code> ou
          <code>ap_filter_protocol</code>.</dd>

      <dt>Ajout d'un élément de traitement pour le processus père (monitor hook)</dt>
      <dd>Ce nouvel élément de traitement permet aux modules de lancer
      des jobs réguliers/planifiés au niveau du processus père
      (root).</dd>

      <dt>Modifications de l'API de traitement des expressions rationnelles</dt>

      <dd>Le fichier d'en-tête <code>pcreposix.h</code> n'est plus disponible ;
      il a été remplacé par le nouveau fichier
      d'en-tête <code>ap_regex.h</code>.  L'implémentation
      POSIX.2 <code>regex.h</code> exposée dans l'ancien fichier d'en-tête
      est maintenant disponible dans l'espace de nommage <code>ap_</code>
      depuis <code>ap_regex.h</code>.  Les appels à <code>regcomp</code>,
      <code>regexec</code>, etc... peuvent être remplacés par des appels à
      <code>ap_regcomp</code>, <code>ap_regexec</code>.</dd>

      <dt>Cadre d'application DBD (API pour base de données SQL)</dt>

      <dd><p>Avec Apache 1.x et 2.0, les modules nécessitant un processus
      SQL d'arrière-plan devaient s'en charger eux-mêmes.  En dehors du fait
      de réinventer la roue, ceci peut s'avérer très inefficace, par
      exemple lorsque plusieurs modules maintiennent chacun leurs
      propres connexions.</p>
      <p>Apache 2.1 et supérieur fournissent l'API <code>ap_dbd</code> qui
      permet la gestion des connexions à la base de données (y compris
      les stratégies optimisées pour les modules MPM threadés
      et non threadés), tandis que APR 1.2 et supérieur fournissent
      l'API <code>apr_dbd</code> qui permet l'interaction avec la
      base de données.</p>
      <p>Les nouveaux modules DEVRAIENT désormais utiliser ces APIs pour
      toutes les opérations liées aux bases de données SQL.
      De même, les applications existantes DEVRAIENT être mises à jour
      lorsque c'est possible, que ce soit de manière transparente ou sous forme
      d'une option recommandée à leurs utilisateurs.</p></dd>
    </dl>
  </div></div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="./en/new_features_2_2.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="./fr/new_features_2_2.html" title="Français">&nbsp;fr&nbsp;</a> |
<a href="./ko/new_features_2_2.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./pt-br/new_features_2_2.html" hreflang="pt-br" rel="alternate" title="Português (Brasil)">&nbsp;pt-br&nbsp;</a> |
<a href="./tr/new_features_2_2.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
</div><div class="top"><a href="#page-header"><img src="./images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/2.4/new_features_2_2.html';
(function(w, d) {
    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
        d.write('<div id="comments_thread"><\/div>');
        var s = d.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
    }
    else { 
        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
    }
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2023 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
//--><!]]></script>
</body></html>