Vue d'ensemble des nouvelles fonctionnalités d'Apache 2.0

Ce document décrit les changements majeurs apportés entre les versions 1.3 et 2.0 du serveur HTTP Apache.

Migrer à 2.0 depuis la version 1.3
Améliorations du Système de Base
Threading Unix
Sur les systèmes Unix qui supportent les threads POSIX, Apache peut à présent tourner en mode hybride multi-processus et multi-threadé, ce qui augmente l'extensibilité et la performance du serveur pour la plupart des configurations.
Nouveau Système de Compilation
Le processus de compilation a été refait de A à Z; il utilise à présent autoconf et libtool, ce qui rend la compilation d'Apache plus familière aux utilisateurs d'autre logiciels de mème type.
Support Multiprotocole
Apache dispose désormais de l'infrastructure nécessaire pour supporter d'autres protocoles. Le module mod_echo illustre ces possibilités.
Support amélioré des Plate-formes non-Unix
Apache 2.0 se montre plus rapide et plus stable sur les plate-formes non Unix, telles BeOS, OS/2, NetWare et Windows. L'apparition des Modules Multi-Processus (MPMs), ainsi que de la bibliothèque "Apache Portable Runtime" (APR) permet a Apache de tirer parti des API natives de ces plate-formes, sans s'appuyer sur leurs couches POSIX souvent boguées et peu optimisées.
Nouvelle API Apache
L'Interface de Programmation (API) des modules a beaucoup changé avec le passage à la version 2.0. Les problèmes d'ordre et de priorité des modules, rencontrés avec la version 1.3, devraient maintenant être résolus. Apache 2.0 gère ces problèmes de façon automatique. L'ordre des modules est géré au moyen de "crochets" (hooks), ce qui rend la gestion flexible. De nouveaux appels ont été également créés afin de permettre l'implémentation d'autres fonctions dans les modules, sans devoir corriger le noyau du serveur Apache.
Support IPv6
Sur les systèmes où la bibliothèque Apache Portable Runtime supporte IPv6, Apache peut par défaut écouter sur des interfaces de connexions IPv6. Les directives Listen, NameVirtualHost et VirtualHost supportent également les adresses IPv6 (comme par exemple, dans "Listen[2001:db8::1]:8080").
Filtering
Il est maintenant possible d'écrire des modules Apache pour filtrer les flux de données entrant ou sortant du serveur. A titre d'exemple, il est possible de filtrer des directives Server Side Include de la sortie standard d'un script CGI, au moyen du filtre INCLUDES fourni par le module mod_include. Le module mod_ext_filter permet quant à lui l'utilisation comme filtres de programmes externes à Apache, de la même manière qu'on peut utiliser des programmes CGI comme Handlers.
Réponses d'Erreurs Multilangues
Les messages d'erreur envoyés au navigateur existent à présent en plusieurs langues avec des documents SSI. Ces messages peuvent être personnalisés par l'administrateur afin de s'intégrer avec le site web.
Simplification de la Configuration
Beaucoup de directives, auparavant peu claires, ont été simplifiées. Les directives Port et BindAddress, souvent sources d'incompréhension, ont disparus. Désormais seule la directive Listen sert de liaison pour les adresses IP; la directive ServerName ne précise le nom du serveur et son port que pour les redirections et la gestion des hôtes virtuels.
Support natif de l'Unicode sous Windows NT
Apache 2.0 sur Windows NT utilise à présent l'utf-8 pour tous les noms de fichiers. Ces noms de fichiers sont directement traduits vers l'encodage Unicode du système de fichiers, ce qui permet le support multilangue pour toutes les installations sur la famille NT de Windows, y compris Windows 2000 et Windows XP.Ce support n'est pas fonctionnel pour Windows 95, 98 ni ME, qui utilisent les pages de code locales pour les accès au système de fichiers, comme auparavant.
Mise à jour de la Bibliothèque d'Expressions Rationnelles
Apache 2.0 contient la bibliothèque d'expressions rationnelles compatible Perl (Perl Compatible Regular Expression Library - PCRE). Toutes les expressions rationnelles sont dont gérées avec la syntaxe de Perl 5, plus puissante.
Amélioration des Modules
mod_ssl
Apparu dans Apache 2.0, ce module est une interface aux protocoles de criffrement SSL/TLS fournis par OpenSSL.
mod_dav
Apparu dans Apache 2.0, ce module implémente les spécifications HTTP de gestion distribuée de versions et de rédaction (Distributed Authoring and Versioning - DAV), destinées à la mise en ligne et à la maintenance des contenus Web.
mod_deflate
Module apparu dans Apachge 2.0, mod_deflate permet aux navigateurs qui le supportent de demander la compression des contenus envoyés par le serveur. Cela à l'avantage de réduite l'occupation de la bande passante.
mod_auth_ldap
Apparu dans Apache 2.0.41, ce module permet aux administrateurs d'utiliser un arbre LDAP pour gérer la base d'utilisateurs pour les Authentifications Basiques HTTP. Un module voisin, mod_ldap, permet de globaliser les connexions à l'arbre LDAP et de garder en mémoire cache ces accès.
mod_auth_digest
Améliore les fonctions de cache sur une session entre les différents processus, en utilisant de la mémoire partagée.
mod_charset_lite
Apparu dans Apache 2.0, ce module expérimental permet la conversion et l'enregistrement entre jeux de caractères.
mod_file_cache
Apparu dans Apache 2.0, ce module implémente les fonctionnalités du module mod_mmap_static présent dans Apache 1.3, et offre des fonctions plus avancées pour la gestion de la cache.
mod_headers
Ce module gagne beaucoup de flexibilité avec Apache 2.0 : on peut désormais l'utiliser pour modifier les en-têtes des requêtes utilisés par mod_proxy, et peut aussi positionner les en-têtes des réponses de manière conditionnelle.
mod_proxy
Le module proxy a été réécrit de A à Z. Il tire maintenant avantage de la nouvelle infrastructure de filtrage, et implémente un mandataire plus fiable, et conforme aux normes HTTP/1.1. De nouvelles sections de configuration ajoutées à Proxy donnent un contrôle plus lisible et un traitement plus rapide des requêtes proxifiés; les configurations surcharchées <Directory "proxy:..."> ne sont pas supportées. Le module a aussi été fragmenté en plusieurs modules qui gérent chacun leur protocole : proxy_connect, proxy_ftp et proxy_http.
mod_negotiation
Une nouvelles directive, ForceLanguagePriority a été ajoutée, elle permet de garantir que le client reçoit un seul document dans tous les cas, au lieu de réponses NOT ACCEPTABLE ou MULTIPLE CHOICES. Les algorithmes gérant la négociation et les vues multiples (MultiViews) ont été nettoyés et donnent des réponses plus logiques. Un nouveau format de carte de types (map type) qui peut aussi gérer le contenu de documents a aussi été ajouté.
mod_autoindex
Les listes auto-générés par Autoindex sont à présent configurables, et peuvent utiliser des tables HTML pour une mise en forme plus propre. L'ordre d'affichage des fichiers est également finement paramètrable, comme pour le tri par version, et le filtrage par caractères jokers du listage du répertoire.
mod_include
De nouvelles directives permettent de modifier la valeur par défaut des drapeaux start et end des éléments SSI. Ces directives permettent à la configuration d'affichage de dates et heures d'être effectuée dans le fichier de configuration principal, plutôt que dans le document SSI. Les réponses données par des recherches par expressions rationnelles (qui gèrent à présent les regex Perl) sont recupérés au moyen des variables $0 à $9.
mod_auth_dbm
Plusieurs bases de données DBM sont supportées, et sélectionnables au moyen de la directive AuthDBMType.