Serveur Apache HTTP Version 2.4
Afin d'assister les utilisateurs lors de leurs op�rations de mise �
jour, nous maintenons un document
qui comporte des informations critiques � l'attention des personnes qui
utilisent d�j� le serveur HTTP Apache. Ces informations
ne sont que de br�ves notes, et vous
trouverez plus d'informations dans le document Nouvelles fonctionnalit�s, ou dans
le fichier src/CHANGES
. Les d�veloppeurs d'applications
et de modules trouveront un r�sum� des modifications de l'API dans la
vue d'ensemble Mises � jour de
l'API.
Ce document pr�sente les changements de comportement du serveur qui peuvent n�cessiter une modification de la configuration, et une m�thode pour utiliser la version 2.4 du serveur en parall�le avec la version 2.2. Pour tirer parti des nouvelles fonctionnalit�s de la version 2.4, reportez-vous au document "Nouvelles fonctionnalit�s".
Ce document ne d�crit que les modifications intervenues entre les versions 2.2 et 2.4. Si vous effectuez une mise � jour depuis la version 2.0, vous devez aussi consulter le document de mise � jour de 2.0 vers 2.2.
Le processus de compilation est tr�s similaire � celui de la
version 2.2. Dans la plupart des cas, vous pourrez utiliser votre
ancienne ligne de commande configure
(telle qu'elle
est enregistr�e dans le fichier build/config.nice
situ� dans le r�pertoire de compilation du serveur). Voici certains
changements intervenus dans la configuration par d�faut :
mod_cache_disk
dans la version 2.4.mod_lbmethod_bybusyness
. Vous devrez compiler et
charg�s tous les modules correspondants que votre configuration
utilise.LoadModule
sont mises en commentaires dans le fichier de configuration.Des changements significatifs dans la configuration de l'autorisation, ainsi que quelques changements mineurs, peuvent n�cessiter une mise � jour des fichiers de configuration de la version 2.2 avant de les utiliser sous la version 2.4.
Tout fichier de configuration qui g�re des autorisations devra probablement �tre mis � jour.
Vous devez vous reporter au document Authentification, autorisation et contr�le d'acc�s, et plus particuli�rement � la section Pour aller plus loin qu'une simple autorisation qui explique les nouveaux m�canismes permettant de contr�ler l'ordre dans lequel les directives d'autorisation sont appliqu�es.
Les directives qui contr�lent la mani�re dont les modules
d'autorisation r�agissent lorsqu'ils ne reconnaissent pas
l'utilisateur authentifi� ont �t� supprim�es : elles comprennent les
directives AuthzLDAPAuthoritative, AuthzDBDAuthoritative,
AuthzDBMAuthoritative, AuthzGroupFileAuthoritative,
AuthzUserAuthoritative et AuthzOwnerAuthoritative. Ces directives
ont �t� remplac�es par les directives plus explicites RequireAny
, RequireNone
, et RequireAll
.
Si vous utilisez mod_authz_dbm
, vous devez
mettre � jour votre configuration en rempla�ant les directives du
style Require group ...
par des directives du style
Require dbm-group ...
.
Dans la version 2.2, le contr�le d'acc�s bas� sur le nom d'h�te
du client, son adresse IP, ou d'autres caract�ristiques de la
requ�te �tait assur� via les directives Order
, Allow
, Deny
, et Satisfy
.
Dans la version 2.4, ce contr�le d'acc�s est assur�, comme tout
contr�le d'autorisation, par le nouveau module
mod_authz_host
. Bien que le module
mod_access_compat
soit fourni � des fins de
compatibilit� avec les anciennes configurations, les anciennes
directives de contr�le d'acc�s devront �tre remplac�es par les
nouveaux m�canismes d'authentification.
M�langer d'anciennes directives comme Order
, Allow
ou Deny
avec des nouvelles comme
Require
est techniquement
possible mais d�conseill�. En effet, mod_access_compat
a
�t� con�u pour supporter des configurations ne contenant que des anciennes
directives afin de faciliter le passage � la version 2.4. Les
exemples ci-dessous vous permettront de vous faire une meilleure id�e des
probl�mes qui peuvent survenir.
Voici quelques exemples de contr�le d'acc�s avec l'ancienne et la nouvelle m�thode :
Dans cet exemple, toutes les requ�tes sont rejet�es :
Order deny,allow Deny from all
Require all denied
Dans cet exemple, toutes les requ�tes sont accept�es :
Order allow,deny Allow from all
Require all granted
Dans l'exemple suivant, tous les h�tes du domaine example.org ont l'autorisation d'acc�s, tous les autres sont rejet�s :
Order Deny,Allow Deny from all Allow from example.org
Require host example.org
Dans l'exemple suivant, tous les h�tes du domaine example.org ont l'autorisation d'acc�s, tous les autres sont rejet�s :
Order Deny,Allow Deny from all Allow from example.org
Require host example.org
Dans l'exemple suivant, le m�lange d'anciennes et de nouvelles directives produit des r�sultats inattendus.
DocumentRoot "/var/www/html" <Directory "/"> AllowOverride None Order deny,allow Deny from all </Directory> <Location "/server-status"> SetHandler server-status Require 127.0.0.1 </Location> access.log - GET /server-status 403 127.0.0.1 error.log - AH01797: client denied by server configuration: /var/www/html/server-status
Pourquoi httpd interdit l'acc�s � server-status alors que la
configuration semble l'autoriser ? Parce que dans ce sc�nario de fusion de configuration, les
directives de mod_access_compat
sont prioritaires par
rapport � celles de mod_authz_host
.
L'exemple suivant quant � lui produit un r�sultat conforme :
DocumentRoot "/var/www/html" <Directory "/"> AllowOverride None Require all denied </Directory> <Location "/server-status"> SetHandler server-status Order deny,allow Deny from all Allow From 127.0.0.1 </Location> access.log - GET /server-status 200 127.0.0.1
En conclusion, m�me si une configuration hybride peut fonctionner, essayez de l'�viter lors de la mise � jour : soit conservez les anciennes directives, puis migrez-les vers les nouvelles ult�rieurement, soit effectuez une migration imm�diate de toutes les anciennes directives vers les nouvelles.
D'autres ajustements mineurs peuvent s'av�rer n�cessaires pour certaines configurations particuli�res, comme d�crit ci-dessous.
MaxRequestsPerChild
a �t� renomm�e en
MaxConnectionsPerChild
;
ce nouveau nom refl�te mieux l'usage de cette directive.
L'ancien nom est encore support�.MaxClients
a
�t� renomm�e en MaxRequestWorkers
; ce nouveau
nom refl�te mieux l'usage de cette directive. Pour les
modules multiprocessus asynchrones, comme event
, le nombre
maximal de clients n'est pas �quivalent au nombre de threads du
worker. L'ancien nom est encore support�.DefaultType
ne produit plus aucun
effet, si ce n'est d'�mettre un avertissement si elle est
d�finie � une valeur autre que none
. D'autres
directives de configuration la remplacent dans la version 2.4.
AllowOverride
est maintenant
None
.EnableSendfile
est maintenant Off.FileETag
est maintenant "MTime Size"
(sans INode).mod_dav_fs
: le format du fichier DavLockDB
a chang� pour les syst�mes
avec inodes. L'ancien fichier DavLockDB
doit �tre supprim� dans le
cadre de la mise � jour.
KeepAlive
n'accepte que les valeurs On
ou Off
.
Avant, toute valeur autre que "Off" ou "0" �tait trait�e comme
"On".Mutex
.
Vous devez �valuer l'impact de ces directives obsol�tes dans
votre configuration version 2.2 afin de d�terminer si elles
peuvent �tre simplement supprim�es, ou si elles doivent �tre
remplac�es par la directive Mutex
.mod_cache
: la directive CacheIgnoreURLSessionIdentifiers
effectue maintenant une correspondance exacte dans la cha�ne de
param�tres au lieu d'une correspondance partielle. Si votre
configuration mettait en jeu des sous-cha�nes comme
sessionid
pour correspondre �
/une-application/image.gif;jsessionid=123456789
,
vous devez maintenant utiliser la cha�ne de correspondance
compl�te jsessionid
.
mod_cache
: le second param�tre de la
directive CacheEnable
ne concerne les contenus en mandat direct que s'ils d�butent par
le protocole appropri�. Dans les versions 2.2 et ant�rieures, un
param�tre tel que '/' concernait tous les contenus.mod_ldap
: la directive LDAPTrustedClientCert
s'utilise
maintenant exclusivement au sein d'une configuration de niveau
r�pertoire. Si vous utilisez cette directive, passez en revue
votre configuration pour vous assurer qu'elle est bien pr�sente
dans tous les contextes de r�pertoire n�cessaires.mod_filter
: la syntaxe de la directive
FilterProvider
utilise
maintenant une expression bool�enne pour d�terminer si un filtre
s'applique.
mod_include
:
#if expr
utilise maintenant le
nouvel interpr�teur d'expressions.
L'ancienne syntaxe peut �tre r�activ�e via la directive
SSILegacyExprParser
.
mod_charset_lite
: l'option
DebugLevel
a �t� supprim�e en faveur d'une
configuration de la directive LogLevel
au niveau r�pertoire.
mod_ext_filter
: l'option
DebugLevel
a �t� supprim�e en faveur d'une
configuration de la directive LogLevel
au niveau r�pertoire.
mod_proxy_scgi
: certaines applications web
ne fonctionneront plus correctement avec la nouvelle
configuration de PATH_INFO
qui est diff�rente de
celle de la version 2.2. La configuration
pr�c�dente peut �tre
restaur�e en d�finissant la variable
proxy-scgi-pathinfo
.mod_ssl
: le contr�le de r�vocation des
certificats bas� sur les CRL doit �tre maintenant explicitement
configur� via la directive SSLCARevocationCheck
.
mod_substitute
: la taille maximale d'une
ligne est maintenant 1Mo.
mod_reqtimeout
: si ce module est charg�, il
d�finit maintenant certains temps d'attente par d�faut.mod_dumpio
: la directive
DumpIOLogLevel
n'est plus support�e. Les
donn�es sont toujours enregistr�es au niveau trace7
de LogLevel
ErrorLog
ou CustomLog
�taient invoqu�es
en utilisant /bin/sh -c
. A
partir de la version 2.4, les commandes de redirection des logs
sont ex�cut�es directement. Pour retrouver l'ancien
comportement, voir la documentation
sur la redirection des logsmod_auto_index
: extrait maintenant les titres
et affiche la description pour les fichiers .xhtml qui �taient
jusqu'alors ignor�s.mod_ssl
: le format par d�faut des variables
*_DN
a chang�. Il est cependant encore possible
d'utiliser l'ancien format via la nouvelle option
LegacyDNStringFormat
de la directive SSLOptions
. Le protocole SSLv2 n'est
plus support�. Les directives SSLProxyCheckPeerCN
et
SSLProxyCheckPeerExpire
sont maintenant d�finies par d�faut � On, et les requ�tes mandat�es
vers des serveurs HTTPS poss�dant des certificats non conformes ou
p�rim�s �choueront donc avec un code d'erreur 502 (Bad gateway).htpasswd
utilise maintenant par d�faut les
condens�s MD5 sur toutes les plates-formes.NameVirtualHost
n'a plus aucun effet, si
ce n'est l'�mission d'un avertissement. Toute combinaison
adresse/port apparaissant dans plusieurs serveurs virtuels est
trait�e implicitement comme un serveur virtuel bas� sur le nom.
mod_deflate
n'effectue plus de compression
s'il s'aper�oit que la quantit� de donn�es ajout�e par la
compression est sup�rieure � la quantit� de donn�es � compresser.
#if expr=
du module mod_include
, ou si la directive
SSILegacyExprParser
a
�t� activ�e pour le r�pertoire contenant les pages d'erreur.
mod_authn_alias
dans les pr�c�dentes versions (en fait la directive
AuthnProviderAlias
)
est maintenant fournie par mod_authn_core
.
LogLevel
qui permet de d�finir
un niveau de journalisation appropri� pour le module
mod_rewrite
. Voir aussi la section journalisation de
mod_rewrite.Tous les modules tiers doivent �tre recompil�s pour la version 2.4 avant d'�tre charg�s.
De nombreux modules tiers con�us pour la version 2.2 fonctionneront sans changement avec le serveur HTTP Apache version 2.4. Certains n�cessiteront cependant des modifications ; se reporter � la vue d'ensemble Mise � jour de l'API.
Invalid command 'User', perhaps misspelled or defined by
a module not included in the server configuration
- chargez
le module mod_unixd
Invalid command 'Require', perhaps misspelled or defined
by a module not included in the server configuration
, ou
Invalid command 'Order', perhaps misspelled or defined by a
module not included in the server configuration
- chargez
le module mod_access_compat
, ou mettez � jour
vers la version 2.4 les directives d'autorisation.Ignoring deprecated use of DefaultType in line NN of
/path/to/apache2.conf
- supprimez la directive DefaultType
et remplacez-la par les
directives de configuration appropri�es.Invalid command 'AddOutputFilterByType', perhaps misspelled
or defined by a module not included in the server configuration
- la directive AddOutputFilterByType
qui �tait
jusqu'alors impl�ment�e par le module core, l'est maintenant par
le module mod_filter, qui doit donc �tre charg�.configuration error: couldn't check user: /path
-
chargez le module mod_authn_core
..htaccess
ne sont pas trait�s -
V�rifiez la pr�sence d'une directive AllowOverride
appropri�e ; sa valeur par
d�faut est maintenant None
.