### Apache HTTP Server

# Configuration globale du serveur

Ce document décrit certaines directives traitées par le noyau du serveur qui sont utilisées pour configurer les opérations de base du serveur.

- Identification du serveur
- Emplacement des fichiers
- Création des processus
- Configuration réseau
- Limitation de l'utilisation des ressources

## Identification du serveur

Directives associées ServerName ServerAdmin ServerSignature ServerTokens UseCanonicalName

Les directives `ServerAdmin` and `ServerTokens` contrôlent quelles informations du serveur seront présentées dans les pages générées par le serveur telles que les messages d'erreur. La directive `ServerTokens` assigne la valeur du champ serveur dans les en-têtes de réponse HTTP.

Les directives `ServerName` and `UseCanonicalName` sont utilisées pour déterminer comment former les URLs s'auto référençant. Par exemple, quand un client requiert un répertoire, mais n'inclut pas de barre oblique finale dans le nom du répertoire, Apache doit rediriger le client vers le nom complet, incluant la barre oblique finale permettant ainsi au client de résoudre correctement les références relatives contenues dans le document.

## Emplacement des fichiers

Directives associées CoreDumpDirectory DocumentRoot ErrorLog Lockfile PidFile ScoreBoardFile ServerRoot

Ces directives contrôlent les emplacements des différents fichiers qu'Apache utilise pour ses propres besoins. Quand le chemin employé ne commence pas par une barre oblique, les fichiers sont localisés relativement à `ServerRoot`. Soyez attentifs à placer ces fichiers dans des chemins qui sont autorisés en écriture aux utilisateurs autres que root. Voir les trucs sur la sécurité pour plus de détails.

## Création des processus

Directives associées BS2000Account Group MaxClients MaxRequestsPerChild MaxSpareServers MinSpareServers ServerType StartServers ThreadsPerChild User

Si la directive `ServerType` est définie avec la valeur recommandée de `Standalone`, Apache 1.3 sur Unix est basé sur un modèle de prélancement des processus. Un unique processus de contrôle est responsable de lancer des processus fils qui écoutent les connexions et les traitent à leur arrivée. Apache essaye de maintenir un certain nombre de processus en réserve ou inactifs, qui restent toujours prêts à traiter les requêtes arrivantes. De cette manière, les clients n'ont pas à attendre que de nouveaux processus fils soient lancés avant que leurs requêtes soient traitées.

Les directives `StartServers`, `MinSpareServers`, `MaxSpareServers`, et `MaxServers` régissent comment le processus père crée les processus fils pour traiter les requêtes. En général Apache se régit seul correctement, et la plupart des sites n'ont pas besoin d'ajuster la valeur de ces directives. Les sites qui veulent servir plus de 256 requêtes simultanées doivent augmenter la valeur de `MaxClients`, tandis que les sites tournant sur des machines limitées en mémoire doivent réduire la valeur de `MaxClients` afin d'éviter d'utiliser le fichier d'échange. Plus d'informations sur le paramétrage de la création des processus se trouvent dans la documentation Aide sur les performances générales.

Tandis que le processus père est généralement lancé en tant que root sous Unix pour se connecter sur le port 80, les processus fils sont lancés sous un utilisateur moins privilégié. Les directives `User` et `Group` servent à définir les privilèges des processus fils. Les processus fils doivent être capable de lire le contenu devant être servi, mais doivent avoir le minimum de privilèges possibles. De plus, à moins que suexec soit utilisé, ces directives définissent également les droits qui seront hérités par les scripts CGI.

`MaxRequestsPerChild` contrôle la fréquence de rénovation des processus, en supprimant les anciens et en lançant de nouveaux.

Sous Windows, Apache lance un processus père et un processus fils. Le processus fils crée un ensemble de threads pour traiter les requêtes. Le nombre de threads est contrôlé par la directive `ThreadsPerChild`.

## Configuration réseau

Directives associées BindAddress KeepAlive KeepAliveTimeout Listen ListenBackLog AcceptFilter MaxKeepAliveRequests Port SendBufferSize TimeOut

Au démarrage d'Apache, celui ci se connecte à un port et une adresse donnés sur la machine locale et attend l'arrivée de requêtes. Par défaut, il écoute sur toutes les adresses, et sur le port défini par la directive `Port`. Toutefois, on peut lui indiquer d'écouter sur plus d'un port, de n'écouter qu'à partir d'une seule adresse, ou une combinaison des deux. Ceci est généralement combiné avec la fonction d' hôte virtuel qui détermine comment Apache répond aux différentes adresses IP, noms d'hôtes et ports.

Il y a deux directives qui permettent de restreindre ou de spécifier quelles adresses et quels ports Apache doit écouter. La directive `BindAddress` restreint le serveur à n'écouter qu'une seule adresse IP. La directive `Listen` peut être utilisée pour spécifier un ensemble d'adresses et de ports qu'Apache doit écouter.

Les directives `ListenBackLog`, `SendBufferSize`, et `TimeOut` permettent d'adjuster comment Apache interagit avec le réseau. La directive `AcceptFilter` contrôle une optimisation spécifique à BSD. Veuillez vous référer à la section concernant BSD dans la documentation sur la performance. -->

Les directives `KeepAlive`, `KeepAliveTimeout`, et `MaxKeepAliveRequests` définissent comment Apache gère les connexions persistantes.

## Limitation de l'utilisation des Ressources

Directives associées LimitRequestBody LimitRequestFields LimitRequestFieldsize LimitRequestLine RLimitCPU RLimitMEM RLimitNPROC ThreadStackSize

Les directives commençant par `LimitRequest` sont employées pour fixer des limites sur la quantité de ressources qui seront utilisées pendant la lecture des requêtes clientes. En limitant ces valeurs, certains types de déni de service peuvent être atténués.

Les directives commençant par `RLimit` sont employées pour fixer des limites sur la quantité de ressources qu'utiliseront les processus lancés par les processus enfants Apache. En particulier, elles contrôle les ressources utilisées par les scripts CGI et les commandes exec SSI.

La directive `ThreadStackSize` est utilisée seulement sur Netware pour contrôler la taille de la pile.

### Apache HTTP Server