<-
Apache > Serveur HTTP > Documentation > Version 2.5

Présentation des nouvelles fonctionnalités de la version 2.6 du serveur HTTP Apache

Langues Disponibles:  en  |  fr 

Ce document décrit quelques changements majeurs entre les version 2.4 et 2.6 du serveur HTTP Apache. Pour les nouvelles fonctionnalités apparues dans la version 2.4, voir le document nouvelles fonctionnalités de la version 2.4.

top

Évolutions du cœur du serveur

Directive ContentDigest et en-tête Content-MD5
La directive ContentDigest et la prise en charge de l’en-tête Content-MD5 ont été supprimées du serveur, en accord avec la suppression de cet en-tête de la RFC 7231 (Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content).
Options de la directive Listen
La directive Listen prend maintenant en charge un argument facultatif options=..., permettant de spécifier des options de socket par écouteur, en particulier multipathtcp pour activer TCP multi-chemin s’il est pris en charge par la plateforme.
Filtrage et complètement de saisie asynchrones
La nouvelle directive AsyncFilter permet de déclarer les types de filtre qui prennent en charge la gestion asynchrone, et la prise en charge du complètement de saisie asynchrone a été étendue à l'ensemble du noyau. Cela étaie la description de la gestion asynchrone des serveurs mandataires et des WebSockets ci-après.
Contrôles de la stricte conformité à HTTP/1.1
De nouvelles directives du noyau permettent un contrôle plus fin de la conformité à HTTP/1.1 : HttpExpectStrict contrôle si un code 417 est renvoyé lorsqu’un client omet une prévision 100-Continue, et HttpContentLengthHeadZero contrôle la gestion de Content-Length pour les requêtes HEAD.
Outrepassement du niveau de journalisation en fontion du contexte
La nouvelle directive LogLevelOverride permet d’outrepasser le niveau de journalisation pour des adresses IP clientes individuelles, facilitant ainsi le débogage ciblé sur un serveur en fonctionnement.
Activation du socket systemd
httpd peut maintenant être configuré pour démarrer via l’l’activation du socket systemd.
Nouvelle directive DefaultStateDir
La nouvelle directive DefaultStateDir permet de spécifier un répertoire pour stocker les états persistants.
Prise en charge de la Zone/portée dans les adresses IPv6
Si le serveur a été compilé avec APR version 1.7.0 ou supérieure, des zones (portées) peuvent être spécifiées dans une adresse IPv6 link-local utilisée avec la directive Listen ou VirtualHost.
top

Nouveaux modules

mod_auth_bearer, mod_autht_core, mod_autht_jwt
Un nouveau cadriciel de fournisseur de jeton d’authentification (autht) a été ajouté en plus des piles de fournisseurs authn/authz existantes. mod_auth_bearer implémente l’authentification à jeton Bearer de la RFC 6750 en tant que frontal (semblable à mod_auth_basic), mod_autht_core héberge l’enregistrement du fournisseur autht et mod_autht_jwt fournit la signature et la vérification par jeton Web JSON.
mod_crypto
Ce nouveau module peut chiffrer et déchiffrer des corps de requête et de réponse à l’aide de filtres en entrée et en sortie en utilisant les pilotes crypto APR.
mod_journald, mod_syslog
Ces nouveaux modules permettent la prise en charge de la journalisation vers syslog ou journald.
mod_log_json
Ce nouveau module permet une journalisation des accès structurée au format JSON.
mod_proxy_beacon
Ce nouveau module permet aux serveurs dorsaux des serveurs mandataires inverses de s’annoncer eux-mêmes à l’aide de datagrammes UDP afin qu’ils soient automatiquement ajoutés au répartiteur de charge de leur mandataire frontal.
mod_allowhandlers
Ce nouveau module restreint la liste des gestionnaires qui peuvent s’exécuter dans un certain contexte, fournissant ainsi une couche supplémentaire de contrôle d’accès.
top

Évolutions des module

mod_ssl
Les évolutions de mod_ssl suivantes sont incluses :
  • La directive SSLRandomSeed est maintenant obsolète et ignorée si le serveur a été compilé avec OpenSSL version 1.1.1 ou supérieure.
  • La variable d’environnement SSLKEYLOGFILE peut maintenant être définie pour enregistrer des informations de clé privée pour déchiffrer hors-ligne des vidages du protocole SSL/TLS en utilisant des outils tiers.
  • La nouvelle directive SSLPolicy permet de définir une fois pour toutes un ensemble de définitions SSL nommé et de l’appliquer à plusieurs serveurs virtuels.
mod_proxy, mod_proxy_wstunnel
Le mandataire peut maintenant s’exécuter de manière asynchrone sous le MPM event, libérant de ce fait les threads de travail lors de l’attente de serveurs dorsaux lents. Cela inclut la gestion asynchrone des protocoles Upgraded et des WebSockets, personnalisés à l’aide des nouvelles directives ProxyAsyncDelay, ProxyAsyncIdleTimeout, ProxyWebsocketAsyncDelay et ProxyWebsocketIdleTimeout.
mod_http2
HTTP/2 prend maintenant en charge du « bootstrap » des WebSockets comme décrit dans la RFC 8441 (activé à l’aide de la nouvelle directive H2WebSockets), de la nouvelle directive H2EarlyHint permettant d’ajouter des en-têtes à une réponse 103 Early Hints et d’un comptage précis des octets envoyés pour le format de journalisation %O.
mod_dav
WebDAV prend maintenant en charge les quota de répertoire (directive DAVquota), les extensions du protocole WebDAV de Microsoft (directive DAVMSext), les directives DAVHonorMtimeHeader et DAVLockDBType, et une conformité accrue de l’ETag fort.
Autres améliorations de modules
mod_autoindex ajoute la directive IndexForbiddenReturn404, mod_mime ajoute MimeOptions et mod_session_cookie ajoute SessionCookieMaxAge.
mod_cgid
Si le serveur a été configuré avec --enable-cgid-fdpassing, le démon CGI configure la gestion de stderr de la même façon que mod_cgi.
top

Évolutions des programmes

htpasswd
L’utilitaire htpasswd peut maintenant générer des hachages crypt() SHA-256 ou SHA-512 s’ils sont pris en charge par la bibliothèque C.
top

Modifications pour le développeur de modules

Séparation entre le noyau et le module http
Une grande quantité de code a été déplacée du module http vers le noyau du serveur — en particulier le gestionnaire par défaut, les filtres en entrée et en sortie par défaut et les directives de configuration du noyau — de façon que le serveur puisse fonctionner que le module http soit chargé ou non. Le déplacement de ap_set_etag() depuis le module http vers le noyau était une partie de ce travail.
Nouveaux types de bloc de métadonnées et division du filtre HTTP
Les nouveaux types de bloc de métadonnées REQUEST, RESPONSE et HEADERS ont été ajoutés à l’API, ainsi qu’une nouvelle méthode pour définir les en-têtes de réponse standards Date et Server et des aides au formatage de parties de HTTP/1.x (en-têtes, segments de fin) à réutiliser en dehors du noyau, par exemple dans mod_proxy. Le filtre HTTP_IN a été divisé en un filtre HTTP générique et un filtre spécifique à HTTP/1.x HTTP1_BODY_IN, et un nouveau drapeau body_indeterminate sur request_rec indique qu’un corps de requête peut être présent et doit être lu ou supprimé.
Prise en charge d’un ETag fort et notes binaires de requête
Un concept de « notes binaires » (binary notes) a été ajouté à request_rec, permettant la définition des indicateurs de bits compactés sur une requête. La première de ces notes, AP_REQUEST_STRONG_ETAG, fait que les modules forcent la compatibilité d’un ETag fort avec les exigences des RFC telles que celles mandatées par diverses extensions de WebDav. Les nouvelles fonctions ap_make_etag_ex() et ap_set_etag_fd() permettent un contrôle total de la génération des ETag.
Nouveau type ap_method_mask_t
Le type ap_method_mask_t a été ajouté et est maintenant utilisé pour le champ method_mask dans ap_method_list_t, AP_METHOD_BIT, le champ allowed de request_rec, le champ limited de cmd_parms.
Modification du fichier mod_ssl.h de l’API de mod_ssl
L’API de la fonction optionnelle ssl_var_lookup prend maintenant un argument const char *name et renvoie une chaîne const char *. L’argument pool doit maintenant être non NULL.
APIs supprimées
Suite à la suppression de l’en-tête Content-MD5, les fonctions ap_md5digest() et ap_md5contextTo64() ont été supprimées.

La documentation du développeur contient une liste détaillée des changements de l’API.

Langues Disponibles:  en  |  fr