Serveur HTTP Apache Version 2.4
Langues Disponibles: fr
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 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.Loodule
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 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, AuthzAuthoritative et AuthzOwnerAuthoritative. Ces directives ont été remplacées par les directives plus explicites 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 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_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 mod_access_compat
a été conçu pour er des configurations ne contenant que des anciennes directives afin de faciliter le age à 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, il n'y a pas d'authentification et toutes les requêtes sont rejetées :
Order deny,allow Deny from all
Require all denied
Dans cet exemple, il n'y a pas d'authentification et toutes les requêtes sont acceptées :
Order allow,deny Allow from all
Require all granted
Dans l'exemple suivant, il n'y a pas d'authentification et tous les hôtes du domaine example.org ont l'autorisation d'accès, tous les autres étant 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 local </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 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.
Dans de nombreuses configurations avec authentification où la directive Satisfy
était définie à sa valeur par défaut ALL, les lignes de configuration qui désactivent le contrôle d'accès basé sur l'hôte sont maintenant omises :
# configuration en version 2.2 qui désactive le contrôle d'accès basé sur le nom # d'hôte pour n'utiliser que l'authentification Order Deny,Allow Allow from all AuthType Basic AuthBasirovider file AuthFile /example.com/conf/s.wd AuthName secure Require valid-
# Pas besoin de remplacer les directives de contrôle d'accès basées sur le nom # d'hôte désactivées AuthType Basic AuthBasirovider file AuthFile /example.com/conf/s.wd AuthName secure Require valid-
Dans les configurations où l'authentification et le contrôle d'accès se combinaient dans un but précis, les directives de contrôle d'accès doivent être migrées. Dans l'exemple suivant, les requêtes qui correspondent aux deux critères sont acceptées :
Order allow,deny Deny from all # ALL est la valeur par défaut de Satisfy Satisfy ALL Allow from 127.0.0.1 AuthType Basic AuthBasirovider file AuthFile /example.com/conf/s.wd AuthName secure Require valid-
AuthType Basic AuthBasirovider file AuthFile /example.com/conf/s.wd AuthName secure <RequireAll> Require valid- Require ip 127.0.0.1 </RequireAll>
Dans les configurations où l'authentification et le contrôle d'accès se combinaient dans un but précis, les directives de contrôle d'accès doivent être migrées. Dans l'exemple suivant, les requêtes qui correspondent à au moins un critère sont acceptées :
Order allow,deny Deny from all Satisfy any Allow from 127.0.0.1 AuthType Basic AuthBasirovider file AuthFile /example.com/conf/s.wd AuthName secure Require valid-
AuthType Basic AuthBasirovider file AuthFile /example.com/conf/s.wd AuthName secure # Implicite : <RequireAny> Require valid- Require ip 127.0.0.1
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 é.MaxClients
a été renommée en event
, le nombre maximal de clients n'est pas équivalent au nombre de threads du worker. L'ancien nom est encore é.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).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
.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
.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.LDAPTrustedClientCert
s'utilise maintenant exclusivement au sein d'une configuration de niveau répertoire. Si vous utilisez cette directive, ez en revue votre configuration pour vous assurer qu'elle est bien présente dans tous les contextes de répertoire nécessaires.FilterProvider
utilise maintenant une expression booléenne pour déterminer si un filtre s'applique.mod_include
:
#if expr
utilise maintenant le nouvel SSILegacyExprParser.LogLevel
au niveau répertoire.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
.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.LogLevel
documentation sur la redirection des logs
mod_auto_index
: extrait maintenant les titres et affiche la description pour les fichiers .xhtml qui étaient jusqu'alors ignorés.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).htwd
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 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 mod_authn_core
.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 '', 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 : /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
.Langues Disponibles: fr