• Aucun résultat trouvé

Directives de server-pool spécifiques aux MPM

Section 12 Serveur HTTP Apache

12.5 Directives de configuration dans httpd.conf

12.5.9 Directives de server-pool spécifiques aux MPM

Sous le Serveur HTTP Apache 2.0, la responsabilité de gérer les caractéristiques de server-pool est octroyée à un groupe de modules appelé MPM. Les caractéristiques de server-server-pool sont différentes selon le MPM spécifique utilisé. C'est la raison pour laquelle un conteneur

IfModule est nécessaire pour définir le server-pool du MPM qui est utilisé.

Par défaut, le Serveur HTTP Apache 2.0 définit le server-pool aussi bien pour le MPM

prefork que le MPM worker.

Ci-dessous figure une liste des directives figurant dans les conteneurs de server-pool spécifiques aux MPM.

12.5.9.1. StartServers

La directive StartServers définit le nombre de processus serveur créés au démarrage. Étant donné que le serveur Web supprime et crée dynamiquement des processus serveur en fonction de la charge du trafic, il n'est pas nécessaire de modifier ce paramètre. Le serveur Web est

configuré de manière à lancer 8 processus serveur au démarrage pour le MPM prefork et 2

pour le MPM worker.

12.5.9.2. MaxRequestsPerChild

MaxRequestsPerChild définit le nombre total de requêtes que chaque processus serveur enfant sert avant de s'arrêter. L'attribution d'une valeur à MaxRequestsPerChild est importante afin d'éviter des pertes de mémoire induites par des processus longs. La valeur par défaut de MaxRequestsPerChild pour le MPM prefork est 4000 et 0 pour le MPM worker. 12.5.9.3. MaxClients

MaxClients fixe une limite au nombre total de processus serveur ou de clients connectés simultanément qui peuvent s'exécuter en même temps. L'objectif principal de cette directive est d'éviter qu'un Serveur HTTP Apache surchargé n'entraîne le plantage de votre système d'exploitation. Pour des serveurs très solicités, cette valeur devrait être élevée. La valeur par défaut du serveur est 150, indépendamment du MPM utilisé. Toutefois, il n'est pas recommandé d'attribuer à MaxClients une valeur supérieure à 256 lors de l'utilisation du MPM prefork.

12.5.9.4. MinSpareServers and MaxSpareServers

Ces valeurs ne sont pas seulement utilisées avec le MPM prefork. Elles ajustent la façon selon laquelle le Serveur HTTP Apache s'adapte dynamiquement à la charge reçue en maintenant un nombre approprié de processus serveur de secours déterminiés en fonction du nombre de requêtes entrantes. Le serveur vérifie le nombre de serveurs attendant une requête et en supprime certains s'ils sont plus nombreux que MaxSpareServers ou en crée d'autres s'ils sont moins nombreux que MinSpareServers.

La valeur par défaut donnée à MinSpareServers est 5 ; la valeur par défaut attribuée à

MaxSpareServers est 20. Ces paramètres par défaut devraient être adaptés à presque toutes les situations. Ne donnez pas à MinSpareServers une valeur très élevée car un tel choix se traduira en une charge de traitement importante sur le serveur, même si le trafic est faible.

12.5.9.5. MinSpareThreads et MaxSpareThreads

Ces valeurs ne sont pas seulement utilisées avec le MPM worker. Elles ajustent la façon selon laquelle le Serveur HTTP Apache s'adapte dynamiquement à la charge reçue en maintenant un nombre approprié de processus serveur de secour déterminés en fonction du nombre de requêtes entrantes. Le serveur vérifie le nombre de threads de serveurs attendant une requête et en supprime certains s'ils sont plus nombreux que MaxSpareThreads ou en crée d'autres s'ils sont moins nombreux que MinSpareThreads.

La valeur par défaut donnée à MinSpareThreads est 25 ; la valeur par défaut attribuée à

MaxSpareThreads est 75. Ces paramètres par défaut devraient être appropriés à la plupart des situations. La valeur de MaxSpareThreads doit être supérieure ou égale à la somme de

MinSpareThreads et de ThreadsPerChild, dans le cas contraire, le Serveur HTTP Apache la corrigera automatiquement.

12.5.9.6. ThreadsPerChild

Cette valeur est utilisée uniquement avec le MPM worker. Il définit le nombre de threads (ou fils) au sein de chaque processus enfant. La valeur par défaut pour cette directive est 25. 12.5.10 Listen

La commande Listen identifie les ports sur lesquels votre serveur Web acceptera les demandes entrantes. Par défaut, le Serveur HTTP Apache est paramétré pour écouter les communications Web non-sécurisées sur le port 80et (dans /etc/httpd/conf.d/ssl.conf

définissant tout serveur sécurisé) les communications Web sécurisées sur le port 443.

Si le Serveur HTTP Apache est configuré pour écouter l'activité sur un port dont le numéro est inférieur à 1024, seul le super-utilisateur peut le lancer. En revanche, pour les ports dont le numéro est égal ou supérieur à 1024, httpd peut être lancée en tant que simple utilisateur.

La directive Listen peut également être utilisée pour spécifier des adresses IP particulières sur lesquelles le serveur acceptera des connexions.

12.5.11 Include

Include permet d'inclure d'autres fichiers de configuration au moment de l'exécution.

Le chemin d'accès vers ces fichiers de configuration peut être absolu ou relatif par rapport au

ServerRoot. Important

Pour que le serveur utilise individuellement des modules paquetés, tels que mod_ssl,

mod_perl et php, la directive suivante doit être intégrée dans la Section 1 : Global Environment du httpd.conf :

Include conf.d/*.conf

12.5.12 LoadModule

LoadModule est utilisée pour charger des modules DSO (de l'anglais Dynamic Shared Object, objet partagé dynamiquement). Notez que l'ordre du chargement des modules n'est plus important avec le Serveur HTTP Apache 2.0.

12.5.13 ExtendedStatus

La directive ExtendedStatus spécifie si Apache doit produire des informations élémentaires (off) ou détaillées (on) sur l'état des serveurs, lorsque le gestionnaire de signal server-status est appelé. Ce dernier est appelé à l'aide des balises Location.

12.5.14 IfDefine

Les balises IfDefine entourent des directives de configuration. Elles s'appliquent si résultat du "test" spécifié dans la balise IfDefine est vrai. Les directives sont ignorées si le résultat du test est faux.

Le test dans les balises IfDefine est un nom de paramètre (comme par exemple, HAVE_PERL).

Si le paramètre est défini (c'est-à-dire spécifié comme argument de la commande de démarrage du serveur), le test est vrai. Dans ce cas, lorsque le serveur Web est démarré, le test est vrai et les directives contenues dans les balises IfDefine sont appliquées.

12.5.15 SuexecUserGroup

La directive SuexecUserGroup figurant dans le module mod_suexec, permet de spécifier les privilèges d'exécution des programmes CGI qui s'applique à l'utilisateur et au groupe. Des requêtes non-CGI continuent à être traitées en fonction de l'utilisateur et du groupe spécifié dans les directives User et Group.

Remarque

La directive SuexecUserGroup remplace la configuration du Serveur HTTP Apache 1.3 configuration qui utilisait les directives User (utilisateur) et Group (Groupe) au sein de la configuration des sections VirtualHosts (Hôtes virtuels).

12.5.16 User

La directive User définit le nom d'utilisateur du processus serveur et détermine les fichiers auxquels le serveur peut avoir accès. Tous les fichiers auxquels cet utilisateur n'aura pas accès seront également inaccessibles aux clients se connectant au Serveur HTTP Apache.

La valeur par défaut donnée à User est apache.

Cette directive a été supprimée pour la configuration des hôtes virtuels.

Remarque

Pour des raisons de sécurité, le Serveur HTTP Apache n'est pas exécuté en tant que super-utilisateur.

12.5.17 Group

Spécifie le nom de groupe des processus du Serveur HTTP Apache.

Cette directive a été supprimée pour la configuration des hôtes virtuels.

La valeur par défaut attribuée à Group est apache.

12.5.18 ServerAdmin

Donnez comme valeur à la directive ServerAdmin l'adresse électronique de l'administrateur du serveur Web. Cette adresse électronique apparaîtra dans les messages d'erreur sur les pages Web générées par le serveur afin que les utilisateurs puissent signaler un problème en envoyant un message électronique à l'administrateur du serveur.

La valeur par défaut donnée à ServerAdmin est root@localhost.

Généralement, la valeur donnée à ServerAdmin est Webmaster@example.com. Une fois cette valeur déterminée, créez un alias pour Webmaster établi au nom de la personne responsable du serveur Web dans /etc/aliases et exécutez /usr/bin/newaliases.

12.5.19 ServerName

ServerName permet de définir un nom d'hôte et un numéro de port (en accord avec la directive Listen) pour le serveur. La directive ServerName ne doit pas forcément correspondre au nom d'hôte de l'ordinateur. Par exemple, le serveur Web pourrait être

www.example.com bien que le nom d'hôte du serveur soit foo.example.com. La valeur spécifiée dans ServerName doit être un nom de domaine (ou DNS, de l'anglais Domain Name Service) valide qui peut être résolu par le système — ne vous contentez surtout pas d'en inventer un.

Ci-dessous figure un exemple de directive ServerName :

ServerName www.example.com:80

Lors de la détermination d'un ServerName, assurez-vous que son adresse IP et son nom de serveur figurent bien dans le fichier /etc/hosts.

12.5.20 UseCanonicalName

Lorsque la valeur attribuée à cette directive est on, elle configure le Serveur HTTP Apache de manière à ce qu'il se référence en utilisant les valeurs précisées dans les directives

ServerName et Port. En revanche, lorsque la valeur de UseCanonicalName est off, le serveur emploie à la place la valeur utilisée par le client envoyant la requête lorsqu'il fait référence à lui-même.

Par défaut, la valeur attribuée à UseCanonicalName est off. 12.5.21 DocumentRoot

DocumentRoot est le répertoire contenant la plupart des fichiers HTML qui seront servis en réponse aux requêtes. Le défaut de DocumentRoot aussi bien pour le serveur Web sécurisé que pour le serveur Web non-sécurisé est le répertoire /var/www/html. Par exemple, il se peut que le serveur reçoive une demande pour le document suivant :

http://example.com/foo.html

Le serveur recherche le fichier suivant dans le répertoire par défaut :

/var/www/html/foo.html

12.5.22 Directory

Les balises <Directory /path/to/directory> et </Directory> créent un conteneur utilisé pour entourer un groupe de directives de configuration devant uniquement s'appliquer à ce répertoire et à ses sous-répertoires. Toute directive applicable à un répertoire peut être utilisée à l'intérieur de balises Directory.

Par défaut, des paramètres très restrictifs sont appliqués au répertoire racine (/), à l'aide des directives Options et AllowOverride. Sous une telle configuration, tout répertoire du système ayant besoin de paramètres plus permissifs doit contenir explicitement ces paramètres.

Dans la configuration par défaut, un autre conteneur Directory est également configuré pour

DocumentRoot ; ce faisant, des paramètres moins rigides sont assignés à l'arborescence de répertoires, de manière à ce que le Serveur HTTP Apache puisse avoir accès à des fichiers placés dans ce dernier.

Le répertoire conteneur peut également être utilisé pour configurer des répertoires cgi-bin

supplémentaires pour des applications côté-serveur en dehors du répertoire spécifié dans la directive ScriptAlias.

Pour ce faire, le conteneur Directory doit déterminer l'option ExecCGI pour ce répertoire.

Par exemple, si les scripts CGI se trouvent dans /home/my_cgi_directory, ajoutez le conteneur Directory suivant au fichier httpd.conf :

<Directory /home/my_cgi_directory>

Options +ExecCGI

</Directory>

Ensuite, il est nécessaire d'enlever le symbole de commanetaire présent dans la directive

AddHandler afin de permettre l'identification des fichiers ayant une extension .cgi en tant que scripts CGI.

Pour que cette opération se déroule parfaitement, il est nécessaire de définir les permissions pour les scripts CGI et pour le chemin d'accès complet vers les scripts en tant que 0755.

12.5.23 Options

La directive Options contrôle les fonctionnalités spécifiques du serveur qui sont disponibles dans un répertoire particulier. Par exemple, en vertu des paramètres restrictifs spécifiés pour le répertoire root, Options est réglée uniquement sur FollowSymLinks. Aucune fonctionnalité n'est activée, à l'exception du fait que le serveur est autorisé à suivre les liens symboliques dans le répertoire root.

Par défaut, dans le répertoire DocumentRoot, Options est paramétrée pour inclure Indexes et

FollowSymLinks. Indexes permet au serveur de générer le contenu d'un répertoire si aucun

DirectoryIndex (par exemple, index.html) n'est spécifié. FollowSymLinks permet au serveur de suivre des liens symboliques dans ce répertoire.

Remarque

Les déclarations Options de la section de configuration du serveur principal doivent être copiées individuellement dans chaque conteneur VirtualHost.

12.5.24 AllowOverride

La directive AllowOverride définit si des Options peuvent être annulées par les instructions présentes dans un fichier .htaccess. Par défaut, aussi bien le répertoire racine que le répertoire DocumentRoot sont paramétrés pour ne permettre aucune annulation via

.htaccess. 12.5.25 Order

La directive Order contrôle simplement l'ordre dans lequel les directives allow et deny sont analysées. Le serveur est configuré pour analyser les directives Allow avant d'analyser les directives Deny s'appliquant au répertoire DocumentRoot.

12.5.26 Allow

Allow spécifie le client pouvant accéder à un répertoire donné. Le client peut être all, un nom de domaine, une adresse IP, une adresse IP partielle, une paire réseau/masque réseau, etc.

Le répertoire DocumentRoot est configuré afin d'autoriser les requêtes (Allow) de quiconque (all), de la sorte, tout le monde peut y accéder.

12.5.27 Deny

Deny fonctionne selon le même principe que Allow, sauf que cette fois-ci, l'accès est refusé à un client donné. Le DocumentRoot n'est pas configuré par défaut pour refuser (Deny) des requêtes provenant d'un client quelconque.

12.5.28 UserDir

UserDir est le nom du sous-répertoire, au sein du répertoire personnel de chaque utilisateur, où devraient être placés les fichiers HTML personnels devant être servis par le serveur Web.

Par défaut, la valeur attribuée à cette directive est disable (désactiver).

Dans le fichier de configuration par défaut, le nom du sous-répertoire est public_html. Par exemple, il se peut que le serveur reçoive la requête suivante :

http://example.com/~username/foo.html

Le serveur rechercherait alorsle fichier :

/home/username/public_html/foo.html

Dans l'exemple ci-dessus, /home/username/ est le répertoire personnel de l'utilisateur (notez que le chemin d'accès par défaut vers les répertoires personnels des utilisateurs peut être différent).

Assurez-vous que les autorisations relatives aux répertoires personnels des utilisateurs sont correctement définies. Les répertoires personnels des utilisateurs doivent avoir des permissions équivalentes à 0711. Les bits de lecture (r) et d'exécution (x) doivent être définis sur les répertoires public_html des utilisateurs (0755 fonctionnera également). Les fichiers qui seront servis dans les répertoires public_html des utilisateurs doivent au moins avoir un valeur équivalente à 0644.

12.5.29 DirectoryIndex

DirectoryIndex est la page servie par défaut lorsqu'un utilisateur demande un index de répertoire en insérant une barre oblique (/) à la fin d'un nom de répertoire.

Lorsqu'un utilisateur demande à accéder à la page http://exemple/ce_répertoire/, il obtient soit la page DirectoryIndex si elle existe, soit une liste de répertoires générée par le serveur.

La valeur par défaut de DirectoryIndex est le type de topologie index.html et

index.html.var. Le serveur essaie de trouver l'un de ces fichiers et renvoie le premier qu'il trouve. S'il ne trouve aucun des deux fichiers et que Options Indexes est paramétrée pour ce répertoire, le serveur génère et renvoie une liste au format HTML, des sous-répertoires et fichiers contenus dans le répertoire (à moins que la fonctionnalité de listage des répertoires ne soit desactivée).

12.5.30 AccessFileName

AccessFileName nomme le fichier que le serveur doit utiliser pour les informations de contrôle d'accès dans chaque répertoire. La valeur par défaut est .htaccess.

Juste après la directive AccessFileName, une série de balises Files établit un contrôle d'accès sur tout fichier commençant par .ht. Ces directives refusent l'accès par le Web à tous les fichiers .htaccess (ou d'autres commençant par .ht) pour des raisons de sécurité.

12.5.31 CacheNegotiatedDocs

Par défaut, votre serveur Web demande aux serveurs proxy de ne pas mettre en cache des documents négociés sur la base du contenu (c'est-à-dire qui peuvent changer avec le temps ou suite à une entrée saisie par le demandeur). Si la valeur de CacheNegotiatedDocs est paramétrée sur on, cette fonctionnalité est désactivée et les serveurs proxy seront alors autorisés à mettre en cache de tels documents.

12.5.32 TypesConfig

TypesConfig nomme le fichier qui définit la liste par défaut des correspondances de type MIME (extensions de nom de fichier associées à des types de contenu). Le fichier

TypesConfig par défaut est /etc/mime.types. Au lieu d'éditer /etc/mime.types, il est plutôt recommandé d'ajouter des types MIME à l'aide de la directive AddType.

12.5.33 DefaultType

DefaultType définit un type de contenu par défaut pour le serveur Web devant être utilisé pour des documents dont les types MIME ne peuvent pas être déterminés. La valeur par défaut est text/plain.

12.5.34 HostnameLookups

HostnameLookups peut être paramétrée sur on, off ou double. Si HostnameLookups est paramétrée sur on, le serveur résout automatiquement l'adresse IP pour chaque connexion. La résolution de l'adresse IP suppose que le serveur établisse une ou plusieurs connexions avec un serveur DNS, rallongeant ainsi la durée des opérations de traitement. Si HostnameLookups

est paramétrée sur double, le serveur établira une recherche DNS double inversée, rallongeant par là-même encore plus la durée des opérations de traitement.

Afin de conserver des ressources sur le serveur, la valeur par défaut donnée à

HostnameLookups est off.

Si des noms d'hôtes sont nécessaires dans les fichiers journaux de serveurs, songez à exécuter l'un des nombreux outils conçus pour analyser les fichiers journaux ; ces derniers effectuent des recherches DNS non seulement de manière plus efficace mais également en masse lors de la rotation des fichiers journaux de serveurs Web.

12.5.35 ErrorLog

ErrorLog spécifie le fichier dans lequel sont journalisées les erreurs concernant les serveurs.

La valeur par défaut pour cette directive est /var/log/httpd/error_log. 12.5.36 LogLevel

LogLevel définit le niveau de détail avec lequel les messages d'erreur devraient être enregistrés dans les journaux d'erreurs. Les valeurs possibles de LogLevel sont (du niveau le moins détaillé au niveau le plus détaillé) emerg, alert, crit, error, warn, notice, info ou

debug. La valeur par défaut donnée à LogLevel est warn. 12.5.37 LogFormat

La directive LogFormat configure le format des fichiers journaux des différents serveurs Web.

Le LogFormat utilisé dépend en fait des paramètres attribués dans la directive CustomLog. Ci-dessous figurent les options de format s'appliquant si la valeur de la directive CustomLog

est combined :

%h (adresse IP de l'hôte distant ou nom d'hôte)

Répertorie l'adresse IP distante du client demandeur. Si la valeur de HostnameLookups

est on, le nom d'hôte du client est enregistré à moins que le DNS ne puisse le fournir.

%l (rfc931)

Option non-utilisée. Un tiret ([-]) apparaît à sa place dans le fichier journal.

%u (utilisateur authentifié)

Affiche l'identifiant de l'utilisateur enregistré, si l'authentification était nécessaire.

Cette option n'étant généralement pas utilisée, dans le fichier journal, un tiret ([-]) figure dans le champ en question.

%t (date)

Enregistre la date et l'heure de la requête.

%r (chaîne de demandes)

Enregistre la chaîne de demandes telle qu'elle a été envoyée depuis le navigateur ou le client.

%s (état)

Enregistre le code d'état HTTP renvoyé à l'hôte client.

%b (octets)

Enregistre la taille du document.

%\"%{Referer}i\" (referrer)

Enregistre l'URL de la page Web qui a renvoyé l'hôte client au serveur Web.

%\"%{User-Agent}i\" (utilisateur-agent)

Enregistre le type de navigateur Web effectuant la requête.

12.5.38 CustomLog

CustomLog identifie le fichier journal et le format du fichier journal. Par défaut, l'enregistrement se fait dans le fichier /var/log/httpd/access_log.

Le format par défaut de CustomLog est le format du fichier journal combined illustré ci-dessous :

remotehost rfc931 user date "request" status bytes referrer user-agent

12.5.39 ServerSignature

La directive ServerSignature ajoute une ligne contenant la version du Serveur HTTP Apache et le nom du serveur (ServerName) pour tout document créé par un serveur, comme par exemple, les messages d'erreurs renvoyés aux clients. La valeur par défaut donnée à

ServerSignature est on.

La valeur de cette directive peut également être off ou EMail. La valeur EMail ajoute une

La valeur de cette directive peut également être off ou EMail. La valeur EMail ajoute une