Vue d'ensemble des nouvelles fonctionnalités de la
version 2.0 du serveur HTTP Apache
Ce document décrit les changements majeurs apportés entre les
versions 1.3 et 2.0 du serveur HTTP Apache.
- Threading Unix
- Sur les systèmes Unix qui supportent les threads
POSIX, Apache httpd
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 httpd plus familière aux utilisateurs
d'autre logiciels de mème type.
- Support Multiprotocole
- Le serveur HTTP 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
- Le serveur HTTP 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 à 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 d'Apache httpd
- 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 HTTP 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
pour Apache httpd 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 httpd 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 httpd 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.
mod_ssl
- Apparu dans Apache httpd 2.0, ce module est une interface aux protocoles de
chiffrement SSL/TLS fournis par OpenSSL.
mod_dav
- Apparu dans Apache httpd 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 Apache httpd 2.0, mod_deflate permet aux navigateurs qui
le supportent de demander la compression des contenus envoyés par le serveur.
Cela a l'avantage de réduite l'occupation de la bande passante.
mod_auth_ldap
- Apparu dans Apache httpd 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 httpd 2.0, ce module expérimental permet la conversion
et l'enregistrement entre jeux de caractères.
mod_file_cache
- Apparu dans Apache httpd 2.0, ce module implémente les fonctionnalités du
module
mod_mmap_static
présent du serveur
HTTP Apache 1.3, et offre des
fonctions plus avancées pour la gestion du cache.
mod_headers
- Ce module gagne beaucoup de flexibilité et peut aussi positionner; avec Apache
httpd 2.0 : on peut
désormais l'utiliser pour modifier les en-têtes des requêtes
utilisés par
mod_proxy
, et pour 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
mandatées ; les configurations surchargé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 nouvelle 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 gérer le contenu de documents a
aussi été ajouté.
mod_autoindex
- Les listes auto-générées 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ées 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
.