Apache Phrasebook
Apache Phrasebook
Apache Phrasebook
Apache
L’ESSENTIEL DU CODE ET DES COMMANDES
Ce Guide de survie est le compagnon indispensable pour ne
jamais vous sentir perdu dans un environnement Apache.
Vous y trouverez en un clin d’œil les principales commandes
Apache
et lignes de code pour amener un serveur Web Apache à
Apache
répondre à vos besoins, que vous exécutiez des domaines
virtuels complexes desservant des millions de pages par
jour ou un simple serveur de test tournant sur un portable.
CONCIS ET MANIABLE
Facile à transporter, facile à utiliser — finis les livres
encombrants ! L’ESSENTIEL DU CODE ET DES COMMANDES
PRATIQUE ET FONCTIONNEL
Plus de 100 fragments de code et commandes
personnalisables pour gérer efficacement un serveur
Apache dans toutes les situations.
Niveau : Intermédiaire
Catégorie : Web
Configuration : Multi-plateforme
Daniel Lopez
Jesus Blanco
CampusPress a apporté le plus grand soin à la réalisation de ce livre afin de vous
fournir une information complète et fiable. Cependant, CampusPress n’assume de
responsabilités, ni pour son utilisation, ni pour les contrefaçons de brevets ou
atteintes aux droits de tierces personnes qui pourraient résulter de cette utilisation.
Les exemples ou les programmes présents dans cet ouvrage sont fournis pour illus-
trer les descriptions théoriques. Ils ne sont en aucun cas destinés à une utilisation
commerciale ou professionnelle.
CampusPress ne pourra en aucun cas être tenu pour responsable des préjudices ou
dommages de quelque nature que ce soit pouvant résulter de l’utilisation de
ces exemples ou programmes.
Tous les noms de produits ou autres marques cités dans ce livre sont des marques
déposées par leurs propriétaires respectifs.
All rights reserved. No part of this book may be reproduced or transmitted in any
form or by any means, electronic or mechanical, including photocopying,
recording or by any information storage retrieval system, without permission from
Pearson Education, Inc.
Aucune représentation ou reproduction, même partielle, autre que celles prévues
à l’article L. 122-5 2˚ et 3˚ a) du code de la propriété intellectuelle ne peut être
faite sans l’autorisation expresse de Pearson Education France ou, le cas échéant,
sans le respect des modalités prévues à l’article L. 122-10 dudit code.
Table des matières
Introduction 1
2 Dépannage 25
A l'aide ! Mon serveur Apache ne fonctionne pas ! 25
Le journal d'erreurs 26
Connexion au démon du journal système 27
Contrôle de la quantité des informations consignées 27
Test de la configuration Apache à la recherche
de problèmes 29
Test d'Apache à partir de la ligne de commande 29
IV APACHE
3 Journaux et surveillance 45
Introduction à la consignation des erreurs dans Apache 45
Fichiers journaux Apache par défaut 46
Création des formats de journaux 46
Création d'un fichier journal personnalisé 48
Redirection des journaux vers un programme externe 49
Consignation conditionnelle de requêtes 49
Surveillance des personnes se connectant à votre site 50
Surveillance d'Apache avec mod_status 51
Surveillance d'Apache avec SNMP 52
Analyse des journaux à l'aide d'outils Open Source 53
Surveillance de vos journaux en temps réel 53
Consignation des requêtes dans une base de données 54
Rotation et archivage des journaux 55
Contrôle de la résolution des adresses IP 56
Traitement d'adresses IP consignées 56
Redémarrage automatique d'Apache en cas de panne 57
Fusion et séparation de fichiers journaux 58
Conservation de fichiers séparés pour chaque
hôte virtuel 59
Entrées de journaux communes 60
Table des matières V
5 Hébergement virtuel 87
Définition de l'hébergement virtuel 87
Hébergement virtuel basé sur IP 88
Configuration de l'hébergement virtuel basé sur IP 89
Hébergement virtuel basé sur le nom 90
Configuration de l'hébergement virtuel basé sur le nom 91
Que se passe-t-il si une requête ne correspond
à aucun hôte virtuel ? 92
Mélange d'hôtes basés sur IP et basés sur le nom 94
Débogage des configurations d'hôtes virtuels 95
Utilisation de SSL avec des hôtes virtuels basés
sur le nom 96
Index 215
A propos des auteurs XI
Découverte d'Apache
Ce chapitre propose une introduction rapide au serveur
Web Apache. Nous examinerons son architecture, ainsi
que les différences qui existent entre ses principales ver-
sions (1.3 et 2.x). Nous expliquerons comment téléchar-
ger et compiler Apache à partir de la source ou à l'aide de
packages binaires et comment activer ou désactiver les
modules communs. Nous parlerons de la mise en forme
des fichiers de serveur, ainsi que de la structure et de la
syntaxe des fichiers de configuration du serveur. Vous
apprendrez également ici à démarrer, à arrêter, puis à
redémarrer Apache. Enfin, vous pourrez modifier la
configuration minimale nécessaires pour faire fonctionner
le serveur comme vous le souhaitez.
Avec près de 68 % de parts de marché, selon Netcraft
(http://www.netcraft.com), Apache est actuellement
le serveur Web le plus populaire sur Internet.
Voici ses principales caractéristiques :
b Portable. Apache s'exécute sous Linux, Windows,
Mac OS X, ainsi que d'autres systèmes d'exploitation.
4 CHAPITRE 1 Les bases d'Apache
Info
Certaines versions d'Apache se terminent par .tar.bz2. Cela
signifie qu'elles ont été compressées à l'aide de l'outil bzip2.
Bien qu'il soit plus lent à compresser et à décompresser, ce
format permet de réduire la taille des fichiers de distribution ;
il est désormais fréquemment utilisé dans de nombreux projets
Open Source. Pour décompresser ce type de fichier, vous pou-
vez effectuer l'une des opérations suivantes sur la plupart des
systèmes Linux modernes :
bunzip2 < apache_1.3.33.tar.bz2 | tar xvf -
tar xvfj apache_1.3.33.tar.bz2
Installation d'Apache
sous Windows
L'installation d'Apache sous Windows est encore plus sim-
ple que sous UNIX. Le processus est quasiment identique
pour Apache 1.3 et 2.x. Il vous suffit de télécharger le
package, à l'adresse http://httpd.apache.org, puis de
lancer l'installation du binaire.
L'assistant vous demande ensuite où installer le serveur,
ainsi que d'autres informations :
b le nom de domaine du réseau ;
b le nom de domaine totalement qualifié du serveur ;
b l'adresse e-mail de l'administrateur.
Modification de l'adresse
et du port utilisés par Apache
Listen 192.168.200.4:80
Listen 8080
Modification de l'utilisateur
Apache
User nobody
Group nobody
Activation et désactivation
de modules individuels
./configure (...) --enable-status
./configure (...) --disable-status
Publication de contenu
DocumentRoot /usr/local/apache/htdocs
Sections
Les sections, sortes de conteneurs de directives, limitent
la portée d'application des directives. Si les directives ne
se trouvent pas dans une section, cela signifie qu'elles
concernent l'ensemble du serveur par défaut (configu-
ration du serveur) et s'y appliquent :
<Directory "/usr/local/apache/htdocs">
...
</Directory>
<Location "/downloads/*.html">
...
</Location>
<FilesMatch "\.(gif|jpg)">
...
</FilesMatch>
22 CHAPITRE 1 Les bases d'Apache
Info
Les sections Directory, Files et Location peuvent aussi
prendre des expressions régulières comme arguments à con-
dition de les faire précéder d'un signe ~. Les expressions
régulières sont des chaînes qui décrivent un jeu de chaînes ou
y correspondent, en fonction de certaines règles de syntaxe.
Sections de directives Apache 23
Sections de directives
pour l'évaluation conditionnelle
Apache assure la prise en charge de sections condition-
nelles. Les directives qui y figurent seront traitées uni-
quement si certaines conditions sont remplies :
<IfDefine>. Les directives de cette section seront
traitées si un argument de ligne de commande spécifi-
que est transféré à l'exécutable Apache. Dans l'exemple
suivant, le paramètre de ligne de commande doit
être -DSSL. Vous pouvez également nier l'argument à
l'aide du signe "!", comme dans <IfDefine !SSL>, de
sorte que les directives s'appliquent si l'argument n'est
pas transféré.
<IfModule>. Les directives d'une section IfModule ne
seront traitées que si le module transféré comme argu-
ment est présent dans le serveur Web. Le fichier de
configuration Apache par défaut comprend des exem-
ples de ce type pour différents modules MPM.
Par exemple, dans le fichier httpd.conf, vous verriez :
<IfDefine SSL>
LoadModule ssl_module modules/mod_ssl.so
</IfDefine>
que vous activeriez à la ligne de commande, comme ceci :
# httpd –DSSL
2
Dépannage
Le journal d'erreurs
ErrorLog logs/error_log
Contrôle de la quantité
des informations consignées
LogLevel notice
Vérification du fonctionnement
d'Apache
ps –aux | grep httpd
25297 ? S 0:00 /usr/local/www/bin/
httpd -k start
15874 ? S 0:06 /usr/local/www/bin
/httpd -k start
14441 ? S 0:02 /usr/local/www/bin
/httpd -k start
...
/usr/sbin/lsof | grep httpd |grep IPv
httpd 14441 nobody 3u IPv4 136524
TCP www.exemple.com:http (LISTEN)
httpd 25297 root 3u IPv4 136524
TCP www.exemple.com:http (LISTEN)
httpd 30277 nobody 3u IPv4 136524
TCP www.exemple.com:http (LISTEN)
...
netstat -ltnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign
Address State PID/Program name
tcp 0 0 192.168.1.151:80 0.0.0.0:
* LISTEN 25297/httpd
tcp 0 0 0.0.0.0:22 0.0.0.0:
* LISTEN 1038/sshd
Il pourra arriver que vous ne puissiez pas vous connecter
au serveur. Vous ne serez donc pas en mesure de savoir s'il
fonctionne ou si un problème est survenu sur le réseau.
Les systèmes UNIX proposent plusieurs outils de ligne de
commande pour vous aider ; l'exemple en montre quel-
ques-uns.
L'outil ps indique si le processus httpd fonctionne ou non
sur le système.
Les outils netstat et lsof désignent le port et l'adresse sur
lesquels le serveur Apache écoute.
32 CHAPITRE 2 Dépannage
Utilisation d'Apache…
pour déboguer Apache
Plusieurs modules Apache peuvent vous aider à dépanner
ou à déboguer une configuration Apache ou une applica-
tion Web.
mod_loopback est un outil de débogage de clients Web. Il
renvoie simplement en écho au navigateur tout ce qu'il a
reçu concernant une requête HTTP, notamment des
données POST ou PUT :
http://www.snert.com/Software/mod_loopback/index.shtml
Erreurs de démarrage
De nombreuses causes peuvent empêcher Apache de
démarrer. Dans cette section, nous examinons certains des
problèmes qui peuvent survenir et les erreurs que vous
recevez pour chacun d'entre eux.
Erreur de syntaxe
Syntax error on line xxx of /etc/httpd/httpd.conf:
Résolution de nom
"Cannot determine hostname"
Erreurs de segmentation
"child pid xxx exit signal Segmentation Fault (11)"
Les redirections
ne fonctionnent pas
UseCanonicalName off
Si votre serveur Apache devient inaccessible dès que le
serveur émet une redirection, cela peut être dû au fait que
le nom canonique de votre hôte est inaccessible depuis
l'extérieur de votre réseau, ou est incorrect.
Par exemple, un ServerName réglé sur localhost, 127.0.0.1,
ou sur une adresse privée, sera inaccessible si le serveur
redirige l'utilisateur vers une URL fondée sur ces valeurs.
Pour résoudre ce problème, fournissez un ServerName
valide, ou réglez UseCanonicalName sur "off", de sorte que
les URL autoréférentielles se construisent avec le nom
d'hôte fourni par le client. Ce problème survient fré-
quemment sur les machines se trouvant derrière un proxy
inverse (voir Chapitre 10).
Liste de vérification pour le dépannage 41
Liste de vérification
pour le dépannage
Cette section résume certains des problèmes les plus fré-
quents survenant lors du dépannage d'Apache.
Démarrage du serveur
Si vous ne parvenez pas à démarrer le serveur, consultez
le journal des erreurs pour obtenir des informations sur les
causes de la panne.
Si un autre serveur fonctionne déjà à cette adresse, optez
pour une combinaison port/adresse différente.
Si vous ne disposez pas des autorisations nécessaires pour
vous connecter au port demandé, lancez Apache en tant
que superutilisateur (racine), de sorte à accéder aux ports
privilégiés. Si Apache ne parvient pas à ouvrir les fichiers
de configuration ou de journal, vérifiez qu'ils appartien-
nent bien à l'utilisateur qui a installé Apache et que
celui-ci possède l'autorisation d'y écrire.
Connexion au serveur
Si vous tentez d'accéder à une page du serveur et qu'elle
ne s'affiche pas, vous devez d'abord déterminer si l'erreur
provient du serveur, du réseau ou du navigateur.
Vérifiez qu'Apache s'exécute à l'aide de ps, netstat ou du
Gestionnaire de tâches (sous Windows). Il est aussi possi-
ble que le serveur ne s'exécute pas du tout.
Vérifiez ensuite que vous pouvez vous connecter à Apa-
che à partir de la machine locale. Pour cela, utilisez Telnet
pour vous connecter directement au serveur et émettre
une requête test. Vérifiez ensuite qu'Apache fonctionne
42 CHAPITRE 2 Dépannage
Documents introuvables
Si vous parvenez à accéder au serveur mais que vous obte-
nez une erreur de type "Document Not Found" (Document
introuvable), vérifiez que le document existe bien dans le
système de fichiers.
Liste de vérification pour le dépannage 43
Accès interdit
Si un document existe bel et bien mais que son accès vous
est refusé ("Access Forbidden"), vérifiez quelques points de
base.
Assurez-vous que le propriétaire du processus Apache dis-
pose de l'autorisation de lire le fichier.
Vérifiez que le propriétaire du processus Apache possède
des autorisations de lecture et d'énumération pour tous les
répertoires figurant sur le chemin menant au fichier.
Vérifiez que vous ne tentez pas d'accéder à un répertoire ne
contenant pas de fichier d'index alors que les listings de réper-
toire sont interdits dans le fichier de configuration Apache.
Vérifiez que la requête répond à toutes les exigences sti-
pulées par les directives de contrôle d'accès du fichier de
configuration Apache.
Si vous tentez d'accéder à un script CGI, vérifiez qu'il a
reçu des autorisations en lecture et en exécution.
44 CHAPITRE 2 Dépannage
Introduction à la consignation
des erreurs dans Apache
Outre la fonction de consignation des erreurs décrite au
Chapitre 2, Apache propose diverses possibilités pour
enregistrer des informations concernant tous les aspects
d'une requête. Ce chapitre décrit les problèmes les plus
fréquents survenant lors de la consignation des requêtes :
consignation conditionnelle, rotation des journaux,
résolution des adresses IP et consignation de type "pipe".
Il traite également de plusieurs modules et utilitaires inté-
grés et tiers, destinés à surveiller la situation de votre ser-
veur Apache et à analyser ses journaux.
46 CHAPITRE 3 Journaux et surveillance
Consignation conditionnelle
de requêtes
SetEnvIf Request_URI "(\.gif|\.jpg)$" image
CustomLog logs/access_log common env=!image
SetEnvIf Remote_Addr 192\.168\.200\.5 specialmachine
CustomLog logs/special_access_log common env=specialmachine
Surveillance d'Apache
avec mod_status
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 192.168.0
</Location>
Attention
Si le chemin pointant vers le programme de rotation des jour-
naux comprend des espaces, vous devrez peut-être les annuler
en les faisant préfixer par une barre oblique inversée (\). Cela
est particulièrement courant sous Windows.
56 CHAPITRE 3 Journaux et surveillance
Contrôle de la résolution
des adresses IP
HostNameLookups on
Traitement d'adresses IP
consignées
$ logresolve < access_log > resolved_log
noms d'hôtes. Ces outils sont plus efficaces, car ils placent
les résultats en cache et n'entraînent pas de délais lors de la
réponse aux requêtes des clients.
Apache propose un outil de ce type, intitulé logresolve
(logresolve.exe dans Windows), qui lit les entrées du
journal à partir de l'entrée standard et produit le résultat
inverse sur la sortie standard. Pour lire de et vers un
fichier, vous pouvez utiliser la redirection, sous UNIX et
Windows, comme indiqué dans l'exemple.
N'oubliez pas que le résultat d'une résolution d'adresse IP
ne correspondra pas toujours au nom de l'hôte qui a
véritablement envoyé la requête. Ainsi, par exemple, s'il
existe un proxy ou une passerelle entre le client et le ser-
veur Web, l'adresse IP signalée par HostNameLookups ou
logresolve correspondra à l'adresse IP du proxy ou de la
passerelle. Vous obtiendrez alors le nom d'hôte du serveur
proxy ou du bloc IP géré par la passerelle, plutôt que le
nom d'un hôte réel.
Redémarrage automatique
d'Apache en cas de panne
#!/bin/bash
if [ `ps -waux | grep -v grep | grep -c httpd` -lt 1 ];
then apachectl restart; fi
Mappage d'URL
Ce chapitre explique comment configurer Apache pour
mapper (mettre en correspondance) des requêtes avec des
fichiers et des répertoires, ou les rediriger vers des pages
ou des serveurs spécifiques. Ces informations sont utiles
pour résoudre des problèmes habituels, par exemple :
continuer à travailler avec des URL lorsque la structure
du site change, traiter les sites Web sensibles à la casse,
prendre en charge plusieurs langues, etc. Nous explique-
rons également comment utiliser le CGI et les fonction-
nalités SSI présentes dans Apache de manière à fournir un
contenu généré de manière dynamique.
64 CHAPITRE 4 Mappage d'URL et contenu dynamique
Echec de la redirection
ou requêtes non autorisées
ErrorDocument 404 /search.html
Attention !
Des programmes CGI d'exemple ou mal écrits peuvent consti-
tuer un risque pour la sécurité. Si vous n'utilisez pas cette
fonctionnalité, il est recommandé de la désactiver globalement
(voir Chapitre 6).
Désignation de ressources
comme des CGI exécutables
ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin
SSI
Document on disk
This document, <!--#echo var="DOCUMENT_NAME" -->,
was last modified <!--#echo var="LAST_MODIFIED" -->
Content received by the browser
This document, sample.shtml,
was last modified Sunday, 14-Sep-2005 12:03:20 PST
Configuration de SSI
AddType text/html .shtml
AddHandler server-parsed .shtml
Paramétrage dynamique
des variables d'environnement
SetEnvIf HTTP_USER_AGENT MSIE iexplorer
SetEnvIf HTTP_USER_AGENT MSIE iexplorer=foo
SetEnvIf HTTP_USER_AGENT MSIE !JavaScript
Info
SetEnvIf et BrowserMatch proposent des versions non sensibles
à la casse (SetEnvIfNoCase et BrowserMatchNoCase) qui peuvent
être utilisées pour simplifier les expressions régulières dans
certaines situations.
Variables d'environnement
spéciales
BrowserMatch "Mozilla/2" nokeepalive
Négociation du contenu
AddCharset UTF-8 .utf8
AddLanguage en .en
AddEncoding gzip .gzip .gz
Configuration de la négociation
du contenu
Options +Multiviews
AddHandler type-map .var
Il existe deux méthodes principales pour configurer la
négociation du contenu dans Apache : le mode Multi-
views et les correspondances de type (type maps).
Le mode Multiviews peut être activé en ajoutant une
directive Options +Multiviews à une configuration. Nous
déconseillons cette méthode, excepté pour les sites Web
simples, car elle n'est pas très efficace. En effet, pour cha-
que requête, elle analyse le répertoire contenant le fichier,
à la recherche de documents analogues contenant d'autres
extensions. Elle construit alors une liste de ces fichiers et
utilise des extensions pour déterminer le codage du con-
tenu et le jeu de caractères, puis pour renvoyer le contenu
approprié.
Configuration de la négociation du contenu 79
URI: page.html.en
Content-type: text/html
Content-language: en
URI: page.html.fr
Content-type: text/html; charset=iso-8859-2
Content-language: fr
Astuce
N'oubliez pas que l'utilisation d'un type de négociation de
contenu affecte les performances du serveur Web, car cela
nécessite des accès supplémentaires au système de fichiers.
80 CHAPITRE 4 Mappage d'URL et contenu dynamique
Info
S'il existe plusieurs documents ressemblant à une adresse mal
orthographiée, le module en renvoie une liste. Attention, tou-
tefois ! Cela pourrait présenter des risques pour la sécurité, ces
fichiers ne pouvant pas tous être proposés au public.
Définition de l'hébergement
virtuel
L'hébergement virtuel est une fonction que proposent la
plupart des serveurs Web modernes. Cela permet de des-
servir des sites Web variés, chacun étant identifié par un
ou plusieurs domaines, à l'aide d'une seule instance d'un
serveur. Un autre avantage réside dans la possibilité de
centraliser l'administration et d'optimiser l'utilisation des
88 CHAPITRE 5 Hébergement virtuel
Info
En cas d'écoute sur des ports non standard, n'oubliez pas de
fournir une directive Listen pour chacun d'entre eux. Attention,
il ne suffit pas qu'ils soient listés dans la section <VirtualHost>
pour qu'Apache écoute leurs requêtes.
Configuration de l'hébergement
virtuel basé sur IP
L'exemple du Listing 5.1 montre trois hôtes virtuels
basés sur IP, desservant un contenu pour trois sites Web :
www.exemple.com, une version intermédiaire de www.exem-
ple.com et www.exemple.net. La directive ServerName
figurant dans chaque section sert à construire des URL
autoréférentielles. La directive DocumentRoot précise
l'emplacement du contenu du site Web pour chaque hôte
virtuel. Il est également possible de consigner les requêtes
et les erreurs pour chaque hôte virtuel dans un fichier dif-
férent. Pour cela, il convient de placer des directives de
consignation, comme TransferLog et ErrorLog, dans la
section d'hôte virtuel (voir Chapitre 3).
Les adresses et les ports répertoriés dans la balise ouvrante
d'une définition <VirtualHost> n'auront pas d'effet sur les
adresses ou les ports qu'écoute Apache. Vous devrez donc
toujours fournir les directives Listen appropriées. Si aucun
port n'est spécifié dans une définition <VirtualHost>,
celui précisé dans la directive Apache la plus récente sera
utilisé. Il est également possible de préciser un caractère
joker ("*") pour écouter les requêtes dans tous les ports
qu'écoute Apache, comme indiqué dans l'hôte virtuel
exemple.net.
Listen 8080
Listen 80
<VirtualHost 192.168.200.2>
ServerName www.exemple.com
DocumentRoot /usr/local/Apache/sites/exemple.com
</VirtualHost>
90 CHAPITRE 5 Hébergement virtuel
<VirtualHost 192.168.200.2:8080>
ServerName www.exemple.com
DocumentRoot /usr/local/Apache/sites/staging
</VirtualHost>
<VirtualHost 192.168.200.4:*>
ServerName www.exemple.net
DocumentRoot /usr/local/Apache/sites/exemple.net
</VirtualHost>
Configuration de l'hébergement
virtuel basé sur le nom
La configuration des hôtes virtuels par noms est semblable
à celle des hôtes virtuels IP. L'exemple du Listing 5.2
montre deux hôtes virtuels partageant l'adresse IP
192.168.200.2.
Apache déterminera l'hôte virtuel vers lequel"router" la
requête, en fonction de la valeur de l'en-tête Host: de la
requête HTTP. Elle sera comparée, à des fins de corres-
pondance, au nom d'hôte fourni par ServerName, ainsi
qu'à tous les noms d'hôtes supplémentaires fournis par la
directive ServerAlias, qui sont optionnels.
Listen 80
NameVirtualHost 192.168.200.2
<VirtualHost 192.168.200.2>
ServerName www.exemple.com
ServerAlias exemple.com Web.exemple.com
DocumentRoot /usr/local/Apache/sites/exemple.com
</VirtualHost>
<VirtualHost 192.168.200.2>
ServerName www.exemple.net
DocumentRoot /usr/local/Apache/sites/exemple.net
</VirtualHost>
NameVirtualHost *
# La section ci-après doit être placée au-dessus de
toute
autre section d'hôte virtuel
<VirtualHost *>
ServerName default.exemple.com
DocumentRoot /usr/local/Apache/sites/default
AliasMatch /* /default.html
</VirtualHost>
NameVirtualHost 192.168.200.2
<VirtualHost 192.168.200.2>
ServerName www.exemple.com
DocumentRoot /usr/local/Apache/sites/exemple.com
</VirtualHost>
<VirtualHost 192.168.200.2>
ServerName staging.exemple.com
DocumentRoot /usr/local/Apache/sites/staging
Débogage des configurations d'hôtes virtuels 95
</VirtualHost>
<VirtualHost 192.168.200.4>
ServerName www.exemple.net
DocumentRoot /usr/local/Apache/sites/exemple.net
</VirtualHost>
# httpd -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:* is a NameVirtualHost
default server exemple.com
(/usr/local/www/conf/httpd.conf:1055)
port * namevhost exemple.com
(/usr/local/www/conf/httpd.conf:1055)
port * namevhost exemple.org
(/usr/local/www/conf/httpd.conf:1082)
port * namevhost exemple.net
(/usr/local/www/conf/httpd.conf:1094)
Syntax Ok
96 CHAPITRE 5 Hébergement virtuel
Différences existant
entre les versions d'Apache
La structure des autorisations et des authentifications
d'Apache a été totalement remaniée dans Apache 2.2.
Même si la plupart des modifications ont été apportées au
niveau du code source, plusieurs changements sont visi-
bles pour l'utilisateur.
Pour des raisons de clarté, et parce que la plupart des
concepts de base continuent de s'appliquer, ce chapitre
décrit principalement les configurations Apache 1.3 et
Apache 2.0.
Toutefois, si vous souhaitez connaître les changements spé-
cifiques à la version 2.2, consultez la section "Apache 2.2",
plus loin dans ce chapitre.
L'authentification basique
et digest
L'authentification des utilisateurs d'un site Web sert pour
des raisons de suivi ou d'autorisation. La spécification HTTP
propose deux mécanismes d'authentification : basique et
digest.
L'authentification basique et digest 103
Personnalisation de la page
de refus d'accès
Lorsqu'une requête reçoit un refus d'accès du serveur
Web, l'utilisateur obtient un message d'erreur généré par
le serveur et codé en dur. Vous pouvez personnaliser ce
message, à l'aide de la directive ErrorDocument, de trois
manières différentes.
Vous pouvez afficher un message personnalisé à l'atten-
tion de l'utilisateur, comme dans les exemples suivants :
Avec Apache 2 :
ErrorDocument 403 "Vous n'êtes pas autorisé à
accéder à ce fichier"
Info
Certaines versions de Microsoft Internet Explorer (MSIE) igno-
rent par défaut les messages d'erreur générés par le serveur
lorsqu'ils font moins de 512 octets. N'oubliez donc pas de spéci-
fier un message supérieur à cette valeur. Vous en saurez plus sur
ce problème en vous référant à un article de la base de connais-
sances de Microsoft, à l'adresse http://support.microsoft.com/
default.aspx?scid=kb;en-us;Q294807.
Restriction d'exécution
de programmes
Les programmes CGI peuvent présenter un risque pour la
sécurité. Il est conseillé de désactiver leur exécution, ou
du moins de la restreindre à des répertoires spécifiques.
Pour cela, n'utilisez pas les directives AddHandler pour acti-
ver globalement l'exécution CGI de certaines extensions
de fichiers.
De même, mod_include autorise l'exécution de CGI et
de commandes externes à l'aide de SSI. Ils sont désac-
tivés par défaut par la directive Options -IncludesNoExec.
Si possible, vérifiez que les répertoires contenant des
scripts CGI inscriptibles par le superutilisateur unique-
ment, et notamment pas par l'utilisateur sous lequel Apa-
che s'exécute.
Sur le même thème, assurez-vous chaque fois que possible
que l'arborescence de documents soit en lecture seule.
Eviter les abus 115
mod_security
Ce module mérite une mention spéciale. C'est, par essence,
un pare-feu de niveau HTTP. Il vous permet d'inspecter
les requêtes HTTP et de réaliser toutes sortes d'opéra-
tions de surveillance, de reporting et de contrôle d'accès.
Il peut détecter et bloquer des attaques communes au
niveau de l'application, notamment celles impliquant une
injection SQL et une vulnérabilité de type chemin trans-
versal. Vous en saurez plus sur ce module en vous rendant
à l'adresse http://www.modsecurity.org.
122 CHAPITRE 6 Sécurité et contrôle d'accès
Apache 2.2
<Location /combined>
AuthType Basic
AuthName "Restricted Access"
AuthBasicProvider file ldap
AuthUserFile /usr/local/apache2/conf/htusers
AuthLDAPURL ldap://exemple.com/o=Sample
Require valid-user
</Location>
Restreindre ou désactiver
l'exécution de CGI et de SSI
Si la prise en charge des scripts CGI ne vous concerne pas,
désactivez mod_cgi. Dans le cas contraire, limitez la capa-
cité à exécuter des scripts à des répertoires spécifiques.
126 CHAPITRE 6 Sécurité et contrôle d'accès
Limiter ou désactiver la
fonctionnalité de proxy
Comme avec les CGI, vous devez désactiver ou restrein-
dre la prise en charge des proxy dans votre installation
Apache, faute de quoi un proxy ouvert pourrait servir à
lancer des attaques ciblées sur d'autres sites, voire à relayer
du spam. Si vous exécutez Apache sous forme de proxy
inverse, vous pouvez désactiver le proxy "ordinaire", ou
classique, avec ProxyRequests off.
Restreindre l'accès
à votre serveur par défaut
Le serveur doit être configuré de manière à refuser l'accès
par défaut aux documents qu'il contient, à moins que
l'accès ne soit explicitement activé. L'extrait de configura-
tion suivant, tiré de la documentation Apache, montre
comment procéder :
<Directory />
Order Deny,Allow
Deny from all
</Directory>
<Directory /usr/local/apache2/htdocs>
Order Deny,Allow
Allow from all
</Directory>
Définition de SSL
La famille de protocoles SSL/TLS (Secure Sockets Layer/
Transport Layer Security) sert à sécuriser les communica-
tions entre deux points d'extrémité, généralement un ser-
veur et un client. Lorsqu'un navigateur accède à un
serveur Web à l'aide du protocole HTTP, les données
sont transmises de manière ouverte. Un tiers capable
d'intercepter cette conversation à un point du réseau
pourra accéder aux données transmises, voire les modifier.
Plusieurs applications, notamment celles destinées aux
paiements électroniques sur le Web, ainsi que l'accès à des
informations d'entreprise sensibles nécessitent un niveau de
sécurité qui n'est pas disponible avec le protocole HTTP.
130 CHAPITRE 7 SSL et TLS
Fonctionnement de SSL
Lorsqu'un utilisateur tape https://www.exemple.com, le
navigateur reconnaît le préfixe https:// et emploie donc
le protocole HTTPS pour se connecter au serveur. Si
aucun port n'est spécifié, c'est le port HTTPS par défaut
(443) qui est utilisé.
Lorsqu'une connexion est établie, le client demande le cer-
tificat du serveur. Un certificat est une donnée électroni-
que qui décrit l'identité d'un point d'extrémité dans la
communication SSL (voir plus loin). La validité du certifi-
cat est alors testée.
Compilation d'OpenSSL 131
Compilation d'OpenSSL
# gunzip < openssl*.tar.gz | tar xvf -
# cd openssl*
# ./config --prefix=/usr/local/ssl --
openssldir=/usr/local/ssl/openssl
# make
# make install
Clés de cryptage
Le cryptage est un processus qui consiste à convertir un
message existant, en texte brut, en un nouveau message
totalement inintelligible pour un espion. Le décryptage
correspond au processus inverse : il transforme le message
crypté en texte brut original.
Généralement, le processus de cryptage et de décryptage
nécessite d'autres informations, à savoir une clé. Si l'expé-
diteur et le destinataire partagent la même clé, le processus
est appelé cryptographie symétrique. Si l'expéditeur et le des-
tinataire possèdent des clés différentes et complémentaires,
on parle alors de cryptographie asymétrique ou cryptographie de
clé publique. La cryptographie de clé publique implique
une paire de clés, dont l'une est publique et l'autre privée.
La clé publique peut être mise librement à disposition,
tandis que le propriétaire conserve la clé secrète privée.
Ces deux clés sont complémentaires ; un message crypté
avec l'une des clés ne peut être décrypté qu'avec l'autre.
Création d'une paire de clés 133
Ici, l'option des3 indique que la clé privée doit être cryptée
et protégée par un mot de passe qui vous sera demandé dès
que vous souhaiterez lancer le serveur, comme indiqué à la
section "SSLPassPhraseDialog".
Certificats
La cryptographie par clé publique peut servir à signer des
messages numériquement. Si, par exemple, vous cryptez
un message avec une clé secrète, le destinataire peut être
assuré qu'il provient de vous en le décryptant simplement
avec la clé publique. Il manque toutefois une étape. Com-
ment, en effet, pouvez-vous authentifier des correspon-
dants que vous n'avez jamais rencontrés en personne ?
Autrement dit, comment pouvez-vous vérifier à qui
appartient réellement une clé publique ?
La solution consiste à impliquer un tiers de confiance,
c'est-à-dire une autorité de certification (Certification
Authority, CA). La CA peut être interne à une société ou
à une université, ou encore être un organisme commercial
Création d'une requête de signature de certificat 135
Attention
Si vous tentez de lancer Apache maintenant, vous obtiendrez
un message d'erreur indiquant qu'il est impossible de lire le
certificat du serveur. Consultez les sections précédentes pour
savoir comment créer votre certificat et vos clés de serveur et
la section "Configuration minimale d'Apache", plus loin dans
ce chapitre, pour savoir comment démarrer votre serveur. En
option, mod_ssl peut créer un certificat de serveur à des fins de
test lors du processus de construction. Pour cela, lancez un
make certificate avant make install.
140 CHAPITRE 7 SSL et TLS
Démarrage d'Apache
avec prise en charge SSL
Une fois mod_ssl installé et configuré, vous pouvez lancer
à Apache avec :
apachectl start
Attention
Cela ne doit être réalisé que dans Apache 1.3 et 2.0. En effet,
Apache 2.2 n'intégrant plus l'option startssl, les directives
SSL ne sont plus considérées différemment des autres.
SSLPassPhraseDialog
SSLPassPhraseDialog builtin
Amélioration
des performances SSL
Les algorithmes impliqués dans SSL sont gourmands en
unité centrale et peuvent considérablement ralentir le
serveur, en particulier en cas de connexions client simul-
tanées. La phase d'échange d'informations peut également
retarder la requête. Plusieurs options peuvent cependant
améliorer la capacité de réponse d'un site.
Vérifiez de bien avoir activé la mise en cache de la session.
Cela accélère les situations où il existe plusieurs connexions
à partir du même client. En cas de grappe de serveurs SSL,
utilisez distcache, de sorte que les données de connexion
puissent être mises en cache même si le client se connecte
à plusieurs serveurs dans la grappe. Apache 2.2 assure la
prise en charge du distcache dès l'installation. Vous en
saurez plus sur ce projet en vous rendant à l'adresse
http://www.distcache.org.
Vous pouvez aussi envisager de disposer d'une machine
dédiée, réservée au traitement SSL. Selon vos besoins, il
peut s'agir d'un équilibreur de charge commercial (élément
matériel) ou d'une machine dédiée exécutant un proxy
inverse (un serveur Web qui se fie à des requêtes vers
d'autres serveurs Web au nom du client). Cela permet
d'apporter des améliorations dans la configuration d'Apache
et du système d'exploitation qui ne seraient pas possibles si
la machine servait également à d'autres objectifs, comme
l'exécution de PHP, de Tomcat et de MySQL. Un proxy
inverse peut offrir des avantages supplémentaires, comme
l'équilibrage des charges et la connexion unique, avec
possibilité d'utiliser des certificats client, sur plusieurs sites
Web d'arrière-guichet. Consultez le Chapitre 10 pour en
savoir plus.
144 CHAPITRE 7 SSL et TLS
Messages d'avertissement
lors de l'accès à un site Web
activé par SSL
Parfois, lors de l'accès à un site Web activé par SSL, les uti-
lisateurs voient s'afficher une fenêtre contextuelle d'aver-
tissement indiquant que quelque chose ne va pas avec le site
Web. Voici quelques-unes des causes les plus fréquentes :
b Le certificat a expiré. Les certificats commerciaux sont
généralement valables pendant une période donnée,
après quoi ils expirent.
b Le domaine du certificat ne correspond pas au
domaine du serveur. Cela survient si le certificat a été
délivré pour un site Web différent.
b Le certificat a été signé par une autorité de certifica-
tion inconnue ou en laquelle le navigateur n'a pas
confiance. Cela peut survenir, par exemple, si vous
utilisez un certificat autosigné à des fins de test.
Authentification à l'aide
des certificats client
SSLVerifyClient require
SSLCACertificateFile \
/usr/local/ssl/openssl/certs/ca.crt
Une fois que vous avez installé des certificats dans vos
clients, vous devez demander à Apache d'activer la valida-
tion SSL pour les clients. Cette directive SSLVerifyClient
exige des clients qu'ils fournissent un certificat valide pour
148 CHAPITRE 7 SSL et TLS
Alternatives à mod_ssl
Il existe plusieurs alternatives à mod_ssl. Pour Apache 1.3,
vous pouvez utiliser Apache-SSL, le module qui se trouve
être à l'origine de mod_ssl. Vous le trouverez à l'adresse
http://www.apache-ssl.org. Plusieurs sociétés com-
merciales, comme IBM, disposent de leurs propres modules
SSL, inclus dans leurs packages de serveur Web basés sur
Apache, et utilisant généralement des boîtes à outils autres
que OpenSSL.
Enfin, vous pouvez choisir un utilitaire indépendant,
comme stunnel (http://www.stunnel.org), pour placer
en proxy les connexions SSL à un serveur Apache existant.
Même s'il n'est pas aussi flexible que mod_ssl, il peut être
pratique pour certains scénarios lorsqu'il n'est pas possible
ni souhaitable de modifier une configuration de serveur
en fonctionnement.
Chapitres annexes
Si vous utilisez Apache comme proxy inverse, sachez que
les informations relatives au certificat et aux connexions
liées à SSL pour les clients ne sont pas disponibles pour les
serveurs d'arrière-guichet. Vous apprendrez à résoudre ce
problème au Chapitre 10.
8
Publication de
contenu avec DAV
Apache et la publication
de contenu
Si vous proposez des services d'hébergement à d'autres
utilisateurs, il faut leur fournir une méthode efficace pour
charger et entretenir leurs sites Web. Ce chapitre traite du
module mod_dav et indique comment le mettre en œuvre
pour offrir aux utilisateurs un moyen de gérer leur
contenu. Nous donnons ici des explications sur les
méthodes qui restreignent l'accès en écriture à des res-
sources particulières, sur la manière de configurer diffé-
rents clients (y compris des dossiers Web de Windows),
ainsi que sur certains des problèmes les plus fréquents.
Vous trouverez également des informations sur la façon
d'activer des répertoires par utilisateur, de sorte que cha-
que utilisateur dispose de son propre espace sur le Web.
152 CHAPITRE 8 Publication de contenu avec DAV
Présentation de WebDAV
WebDAV signifie Web-based Distributed Authoring and
Versioning. C'est un protocole qui prolonge HTTP et
permet aux utilisateurs de charger et de modifier leur
contenu à distance. Pour apprécier la fabuleuse avancée
procurée par WebDAV, il est nécessaire de comprendre
les limitations des précédentes méthodes de publication.
Aux premiers temps du Web, les Webmestres et les admi-
nistrateurs système éditaient le contenu d'un serveur
directement à partir de la coque (shell) en utilisant des édi-
teurs de texte, comme vi ou emacs. A mesure que le Web
a grandi, différents postes sont apparus : les administrateurs
entretenaient le serveur et les utilisateurs et les program-
meurs fournissaient le contenu. Des mécanismes étaient
nécessaires aux utilisateurs pour envoyer et modifier leur
contenu. Or, cette séparation des tâches nécessitait des
règles de restriction d'accès et des méthodes simples à uti-
liser pour des non-techniciens. Les moyens permettant de
générer un contenu Web sont passés de simples éditeurs
de texte à des outils de publication sophistiqués, plus pro-
ches des traitements de texte en termes de fonctionnalités
et de simplicité d'utilisation.
Malheureusement, il n'existait pas de méthode standard
permettant aux uns comme aux autres de charger du con-
tenu. Les solutions étaient diverses : autoriser les utilisa-
teurs à accéder à la coque du système, ou bien employer
le protocole FTP ou d'autres protocoles propriétaires.
L'accès à la coque exige que vos utilisateurs connaissent les
bases de la ligne de commande UNIX. Cela entraîne des
complexités et des problèmes de sécurité liés à l'autorisa-
tion de l'accès direct au serveur. L'emploi d'un client FTP
exige, d'une part que les utilisateurs téléchargent et installent
un outil supplémentaire, d'autre part qu'un serveur FTP
soit installé. Enfin, les scripts personnalisés, le chargement
Avantages de l'utilisation de mod_dav 153
Avantages de l'utilisation
de mod_dav
Nous l'avons vu à la section précédente, mod_dav est
implémenté sous forme de module Apache qui prolonge
le protocole HTTP. Il peut profiter de plusieurs fonctions
intégrées d'Apache, comme SSL pour le cryptage et
l'authentification basée sur le certificat, l'authentification
de base HTTP, les serveurs proxy, etc. L'intégration dans
Apache offre de nombreuses autres possibilités, comme le
partage des mécanismes de contrôle d'accès et l'interaction
avec les moteurs de script, comme mod_perl et PHP.
Le protocole DAV lui-même est extensible. Même si les
ressources accessibles par DAV résident généralement
dans le système de fichiers, DAV peut agir comme un
frontal fondé sur les normes pour toute une série de réfé-
rentiels d'arrière-guichet (comme les bases de données, les
systèmes de contrôle des versions et les structures de ges-
tion documentaire propriétaires).
154 CHAPITRE 8 Publication de contenu avec DAV
Installation de mod_dav
sous Apache 2.0
./configure --enable-dav
Apache 2.0 inclut mod_dav, même s'il n'est pas activé par
défaut. Vous pouvez l'activer comme vous le feriez avec
n'importe lequel des autres modules intégrés. Par défaut, il
compile également l'arrière-guichet du système de fichiers
(--enable-dav-fs). Il est également possible de disposer
d'autres arrière-guichets pour DAV, comme le système de
gestion de source et les bases de données Subversion.
Si vous utilisez la distribution Apache 2 Windows, sachez
que mod_dav y figure déjà sous forme de DLL. Il suffit
donc d'activer les directives LoadModule dans le fichier de
configuration httpd.conf :
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
156 CHAPITRE 8 Publication de contenu avec DAV
Installation de mod_dav
sous Apache 1.3
tar xvfz mod_dav-1.0.3-1.3.6.tar.gz
cd mod_dav-1.0.3-1.3.6
./configure --with-apxs=/usr/local/apache/bin/apxs
make
make install
Apache 1.3 ne dispose pas d'une prise en charge intégrée
de DAV. Il vous faut télécharger et installer mod_dav,
comme vous le feriez avec n'importe quel autre module
tiers (voir l'extrait de configuration). Vous pouvez télé-
charger le code source UNIX et les binaires Windows
aux adresses http://www.webdav.org/mod_dav/ et
http://www.webdav.org/mod_dav/win32/.
Sécurisation de votre
configuration WebDAV
<LimitExcept GET HEAD OPTIONS>
require user davuser
</LimitExcept>
<Location />
Dav On
AuthType basic
AuthName "DAV Resource"
AuthUserFile /usr/local/apache2/conf/htusers
<LimitExcept GET HEAD OPTIONS>
require user davuser
</LimitExcept>
</Location>
158 CHAPITRE 8 Publication de contenu avec DAV
Figure 8.4
Ouverture d'un dossier
Web depuis Firefox.
mod_speling et DAV
Si vous utilisez DAV, vous devrez obligatoirement désac-
tiver mod_speling. En effet, ce module interfère avec plu-
sieurs opérations liées à DAV (comme la création de
nouvelles ressources) en les faisant correspondre par
erreur à des fichiers existants si les noms sont similaires.
mod_speling sert à corriger les erreurs ou les fautes
d'orthographe de l'utilisateur (voir Chapitre 4).
Personnalisation d'Apache
Ce chapitre décrit les options de configuration qui ris-
quent d'affecter les performances et l'évolutivité d'Apache
et indique la manière de les personnaliser. Heureusement,
dans la plupart des cas, cela ne sera pas nécessaire. En effet,
la plupart des problèmes de vitesse et d'évolutivité pro-
viennent généralement du moteur de génération de con-
tenu dynamique ou de la couche de la base de données, et
non du serveur Web Apache lui-même. A noter que cer-
tains des problèmes et des solutions traités dans ce chapitre
sont suffisamment génériques pour s'appliquer à la plupart
des logiciels de serveurs, tandis que d'autres sont spécifi-
ques à Apache.
170 CHAPITRE 9 Performances et évolutivité
Personnalisation du matériel
vmstat
Personnalisation du réseau
et des paramètres de statut
Plusieurs paramètres Apache liés au réseau peuvent dégra-
der les performances. Les sections suivantes traitent des
plus importants.
HostnameLookups
HostnameLookups off
mod_status
Ce module collecte des statistiques sur le serveur, les
connexions et les requêtes. Même s'il peut être utile pour
dépanner Apache, il peut aussi ralentir le serveur. Pour obte-
nir des performances optimales, désactivez ce module, ou
vérifiez au moins que ExtendedStatus soit réglé sur off, le
paramètre par défaut.
AcceptFilter
AcceptFilter http data
AcceptFilter https data
KeepAlive
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 500
Optimisations spécifiques
aux modules
Comme indiqué au début de ce chapitre, la plupart des
étranglements ont lieu aux niveaux de l'accès à la base de
données et de la génération du contenu. Plusieurs modu-
les peuvent vous aider.
Ainsi, par exemple, FastCGI et mod_perl peuvent servir à
accélérer l'exécution d'un script CGI (voir la section "Amé-
lioration des performances du script CGI", au Chapitre 4).
D'autre part, plusieurs systèmes de codage et d'optimisation
ont été créés pour PHP, le langage de développement Web
le plus populaire qui s'exécute sous Apache.
Alternatives à Apache
b lighttpd : http://www.lighttpd.net/
b thttpd : http://www.acme.com/software/thttpd/
b Boa : http://www.boa.org
Apache est un serveur Web portable, sûr et extrêmement
flexible. Pour cela précisément, ce n'est pas toujours la
meilleure solution dans toutes les situations. Les serveurs
indiqués ici sont optimisés et légers ; ils fonctionnent ou
évoluent souvent mieux qu'Apache concernant certaines
tâches. Ainsi, par exemple, des sites Web populaires
(comme Slashdot) emploient Apache exécutant mod_perl
pour générer du contenu et un serveur différent (comme
Boa) pour desservir des images statiques. Cela s'accomplit
facilement en envoyant les images à partir d'un domaine
différent, par exemple images.slashdot.org.
Certains des projets comprennent également d'autres
fonctions populaires d'Apache, comme la réécriture des
URL et la prise en charge du PHP.
10
Proxy Apache et
mise en cache
--enable-module=proxy
--enable-proxy
--enable-proxy-connect
--enable-proxy-ftp
--enable-proxy-http
--enable-proxy-balancer (Apache versions 2.1 et ultérieures)
--enable-proxy-ajp (Apache versions 2.1 et ultérieures)
Pour activer la prise en charge des proxy dans Apache, vous
devez activer le module proxy principal et tout ou partie
des trois arrière-guichets pris en charge : HTTP, CONNECT et
FTP. L'option CONNECT permet aux connexions SSL de tran-
siter sans perte d'intégrité via le proxy. L'arrière-guichet
FTP permet au serveur proxy d'agir en tant que passerelle
pour accéder aux serveurs FTP distants via un navigateur
HTTP normal. Les versions 2.1 et supérieures d'Apache
incluent deux modules proxy additionnels : balancer, qui
fournit la prise en charge de l'équilibrage des charges, et
ajp, qui assure la prise en charge du protocole AJP, fré-
quemment utilisé pour communiquer avec Tomcat et
d'autres moteurs de servlet.
Info
Sachez que la directive ProxyPassReverse opère seulement au
niveau de l'en-tête HTTP. Elle ne vérifie pas, ni ne réécrit les
liens qui sont contenus à l'intérieur des documents HTML. Afin
de réaliser cela, vous pouvez utiliser mod_proxy_html, un module
Apache 2 qui permet de parcourir les documents desservis via le
proxy et de réécrire le code HTML à la volée. Vous pouvez télé-
charger ce module à l'adresse http://apache.webthing.com/
mod_proxy_html/.
Eviter l'inversion des URL en proxy 193
Connexion à Tomcat
ProxyPass /myapp ajp://127.0.0.1:8009/myapp
ProxyPassReverse /myapp ajp://127.0.0.1:8009/myapp
Autres proxy
Squid http://www.squid-cache.org/
Pound http://www.apsis.ch/pound/
Nous l'expliquions au Chapitre 9, "Performances et évo-
lutivité", Apache n'est pas forcément le meilleur choix
dans tous les scénarios. Il existe ainsi plusieurs autres ser-
veurs proxy spécialisés qui pourraient fonctionner de façon
plus satisfaisante, selon vos besoins. Deux des serveurs
proxy Open Source les plus populaires se nomment
Pound et Squid :
b Squid est sorti à peu près au même moment qu'Apa-
che. Il est fortement configurable et excelle dans la
mise en cache.
b Pound est un serveur proxy léger, souvent utilisé
comme proxy inverse SSL.
Autres MPM
--with-mpm=event
--with-mpm=perchild
Utilisation d'Apache
comme serveur FTP
Listen 10.0.0.1:21
<VirtualHost 10.0.0.1:21>
FTP On
DocumentRoot /usr/local/apache/ftpdocs
ErrorLog /usr/local/apache/logs/ftp_error_log
<Location />
AuthName "FTP"
AuthType basic
AuthUserFile /usr/local/apache/conf/htusers
Require valid-user
</Location>
</VirtualHost>
Compression de contenu
à la volée
#Apache 2 mod_deflate
AddOutputFilterByType DEFLATE text/html text/plain
text/xml
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$
no-gzip dont-vary
BrowserMatch ^Mozilla/4 gzip-only-text/html
#Apache 1.3 mod_gzip
mod_gzip_static_suffix .gz
AddEncoding gzip .gz
mod_gzip_item_include file \.html$
Index
A AliasMatch 17, 64
Allow 104, 119
AllowOverride 99
AcceptFilter 179
Amélioration
Accès
évolutivité 170
contrôler 101, 104, 110, 150
performances 170, 193
interdire 43, 109
Analyse du journal 53
limiter 108, 119
Apache
protéger 115
authentification 122
protéger pour DAV 157
autres solutions 186
refus 111
caractéristiques 3
INDEX
refus pour les fichiers sensibles
enfants 205
113
installation 5
serveur 127
sous UNIX et Linux 6, 7
access_log 46
sous Windows 8
AccessFilename 99
POP3 211
Action 68, 71
versions 4
Activation d'un proxy 189
apachetop 53
AddDefaultCharset 80
Application, authentification
AddHandler 68
121
AddModule 18
apxs 19
Adresse IP
Architecture Apache 203
autoriser l'accès 108
Archivage des journaux 55
consigner 56
Arguments
déjà utilisée 34
FollowSymLinks 175
interdire l'accès 109
SymLinksIfOwnerMatch 175
modifier 14
Arrêt
résoudre 56
du serveur 12
Affectation
serveur 32
jeux de caractères 80
Arrière-guichet
langue 80
CONNECT 189
Affichage du contenu d'une
FTP 189
requête 137
HTTP 189
Alias 64
masquer 192
216 Authentification
CGI
améliorer les performances 72
B dépannage 72
exécutables 70
Bande passante exécution 69
restreindre 181 Charges (équilibrage) 199
vol 117 Clé
bandwidth_share 182 cryptage 132
Barre oblique finale 81 cryptographie symétrique 132
Base de données openssl 133
consigner dans 54 paire 133
utilisateur 106 privée 132
BindAddress 15 protégée 134
Bogues publique 132, 134
clients 164 supprimer le mot de passe 134
contourner pour SSL 149 ClearModuleList 18
BrowserMatch 76 Client
BufferedLogs 177 comportant des bogues 164
préférences 77
DAVLockDB 217
INDEX
tester 29 symétrique 132
WebDAV 156 CustomLog 48, 59
configure, commande 18
CONNECT 189 D
Connexion
démon du journal système 27 DAV 153
restreindre 181 accès depuis Firefox 161
serveur 41 accès depuis la ligne de
surveiller 50 commande 162
Tomcat 200 accès depuis Office 158
Consignation accès depuis Windows 159
adresses IP 56 cadaver 162
conditionnelle 49 configurer 156
désactiver 177 contenu dynamique 165
format combiné 48 mod_speling 165
format commun 47 protéger l'accès 157
requête 46 sécuriser la configuration 157
vers une base de données 54 sitecopy 164
Contenu DAVLockDB 168
configurer la négociation 177
desservi par SSL 144
218 Débogage
Débogage 33 Alias 64
hôtes virtuels 95 AliasMatch 17, 64
mod_logio 33 Allow 104, 119
mod_loopback 33 AllowOverride 99
mod_tee 33 AuthGroupFile 107
mod_trace_output 33 AuthName 105
Déchargement (SSL) 195 AuthType 105
Décryptage 132 AuthUserFile 105
_default_ 93 BindAddress 15
DefaultLanguage 80 BrowserMatch 76
Démarrage BufferedLogs 177
avec SSL 141 ClearModuleList 18
du serveur 12 CustomLog 48, 59
serveur 41 DefaultLanguage 80
Démon (journal système) 27 Deny 104, 119
Deny 104, 119 DirectoryIndex 115
Dépannage 33 DirectorySlash 82
accès interdit 43 DocumentRoot 20, 89
connexion au serveur 41 ErrorDocument 93, 111
INDEX
INDEX
ServerName 16, 89 Erreur
ServerRoot 11 adresse déjà utilisée 34
ServerTokens 116 de segmentation 38
SetEnv 74 de syntaxe 34
SetEnvIf 75 en-tête malformé 39
SetFilter 84 fin prématurée d'en-tête 39
SetHandler 68 interne 38, 44
SSLCryptoDevice 144 journal 26
SSLEngine 141 journalisation 40
SSLRequire 150 liaison impossible 35
SSLVerifyClient 147 module non compatible 35
StartServers 205 niveau 27
TimeOut 181 ouverture de fichier 36
TransferLog 48 quantité d'informations 27
UnsetEnv 75 redirection 40
User 15, 126 refus d'accès 37
VirtualDocumentRootIP 97 résolution de nom 36
VirtualScriptAliasIP 97 error_log 46
DirectoryIndex 115 ErrorDocument 93, 111
DirectorySlash 82 ErrorLog 26
Disque, vitesse 170 Event 208
220 Evolutivité du système
F Header 196
Hébergement
virtuel 87
FastCGI 73
sur IP 88, 89
Fautes de frappe, corriger 82
sur le nom 90, 91
favicon.ico 16, 60
Host 90
Fichier
en-têtes 195
améliorer les performances
HostNameLookups 56
du système 174
INDEX
HostnameLookups 178
configuration 9, 10, 11
Hôte
configuration par répertoire
journal 59
désactiver 176
mélanger 94
favicon.ico 16, 60
SSL 96
htaccess 98
virtuel
httpd.pid 61
sur IP 93
journal 46
sur le nom 92
robots.txt 60
virtuels 96
sensibles
déboguer 95
refuser l'accès 113
SSL 144
vérifier les autorisations 126
Hotlinking 117
Filtres 209
htaccess 98
Firefox, accès à DAV 161
htpasswd 106
FollowSymLinks 175
HTTP 189
Format
et WebDAV 154
combiné 48
proxy transparent 201
consignation 47
restreindre les méthodes 118
FTP 189
httpd.pid 61
Fusion de journaux 58
HTTPS130
lsof 221
I K
INDEX
tester 30
Jeux de caractères 80 Limiter
Journal proxy 127
access_log 46 refus de service 180
analyser 53 Limites
archiver 55 système d'exploitation 171,
entrées communes 60 172
erreurs 26, 40 Liste de contrôle de sécurité 123
error_log 46 Listen 14, 141
fichier 46 Listing, désactiver 115
fusion 58 LoadModule 17, 20, 155
personnalisé 48 LogFormat 46
pour chaque hôte 59 LogLevel 27
quantité d'informations 27 logresolve 57
rediriger 49 lsof 31
requête inhabituelle 61
rotation 55
séparation 58
surveillance en temps réel 53
système 27
222 Manipulation des en-têtes
mod_auth 157
bandwidth_share 182
mod_auth_dbm 108
désactiver 18, 124
mod_authn_alias 122
effacer la liste 18
mod_autoindex 116
hébergement virtuel 97
mod_backhand 184
mod_actions 71
mod_bandwidth 181
mod_apache_snmp 52
mod_cache 185, 198
mod_auth 157
mod_cgi 72
mod_auth_dbm 108
mod_choke 182
mod_authn_alias 122
mod_dav 153
mod_autoindex 116
installer 155, 156
mod_backhand 184
mod_deflate 185, 212
mod_bandwidth 181
mod_dir 81
mod_cache 185, 198
mod_filter 210
mod_cgi 72
mod_ftp 211
mod_choke 182
mod_include 74
mod_dav 153
mod_log_spread 177
mod_deflate 185, 212
mod_logio 33
mod_dir 81
mod_loopback 33
mod_filter 210
mod_nocase 83
mod_ftp 211
mod_perl 72
mod_include 74
mod_proxy 197
mod_log_spread 177
mod_require_host 182
mod_nocase 83
Performances 223
mod_perl 72 O
mod_proxy 197
mod_require_host 182
Office, accès à DAV 158
mod_rewrite 40, 81, 117, 167
openssl 132, 133, 135
mod_security 121
Options 114
mod_snmp 52
+ExecCGI 70
mod_speling 82, 83, 165
+Multiviews 78
mod_ssl 131, 138, 140, 148
noatime 175
mod_status 51, 179
Order 104, 120
mod_throttle 182
Outils
mod_tsunami 182
apachetop 53
mod_userdir 166
apxs 19
mod_vhost_alias 97
ImageMagick 185
mod_virtualhost_alias 96
logresolve 57
non compatible 35
lsof 31
rechercher 17
netstat 31
Robotcop 182, 183
openssl 132
Mot de passe
ps 31
clé 134
INDEX
rotatelogs 55
supprimer pour une clé 134
vérifier le fonctionnement 31
MPM 172, 203, 208
vlogger 59
basé sur les processus 204
vmstat 170
basé sur les threads 207
Ouverture avec erreur 36
Event 208
Perchild 209
P
Prefork 205
sélectionner 204
Worker 207 Page
Multiview 78 par utilisateur 166
rediriger 65, 66
N valider 84
Paire de clés 133
Paramètres
NameVirtualHost 91
HostnameLookups 178
Navigateur, accès limité 119
PassEnv 75
Négociation
Perchild 209
configurer 78
Performances
contenu 77, 177
améliorer 170, 193
netstat 31
CGI 72
noatime 175
RAM 170
Nom de serveur 16
SSL 143
système de fichiers 174
vitesse du disque 170
224 Personnalisation
Personnalisation R
journal 48
matériel 170
RAM, augmenter 170
refus d'accès 111
Redémarrage
réseau 178
automatique 57
POP3 211
du serveur 12
POP3Protocol On 212
en douceur (graceful) 14
Port 15
Redirect 65
modifier 14
Redirection
Pound 201
échec 67
Préférences client 77
erreur 40
Prefork 205
expression régulière 66
Problèmes de casse 83
journal 49
Processus
page 65, 66
externes
RedirectMatch 66
contrôler 173
Refus
MPM 204
d'accès 37
Programme, exécution restreinte
personnaliser 111
114
INDEX
de service 180
Protection de l'accès DAV 157
RemoveHandler 68
Protocole
Répertoire
CGI 69
fichiers de configuration 98
DAV 153
listings 115
HTTPS 130
Répertoire utilisateur 167
Proxy
RequestHeader 197
activer 189
Requête
de cache 197
afficher le contenu 137
en-têtes 196
consignation conditionnelle 49
HTTP transparents 201
consigner 46
inverse 184, 188, 191
inhabituelle 61
limiter 127
signature 135
ordinaire 188, 190
Require 105, 107
activer 190
Réseau, personnaliser 178
Pound 201
Résolution
Squid 201
adresses IP 56
URL 193
de nom 36
ProxyPass 191
de problèmes avec
ProxyPassReverse 192
DAVLockDB 168
ProxyRequests 190
Ressources ( CGI exécutables) 70
ps 31
Restriction
Publication
bande passante 181
contenu 20, 151
connexions 181
SSL 225
INDEX
directives 22, 23 requête 137
emplacement 120 requête 135
répertoires 120 Site, modifier 152
VirtualHost 88, 89 sitecopy 164
Sécurisation SNMP 52
configuration de DAV 157 Squid 201
serveur 114 SSI 73
SSL 129 configurer 74
Sécurité SSL 129
désactiver les modules 124 améliorer les performances 143
informations 123 avertissement à l'accès 146
liste de contrôle 123 certificat 130
Segmentation 38 compiler 140
Sélection du MPM 204 contourner les bogues 149
Séparation des journaux 58 contrôle d'accès complexe 150
ServerName 16, 89 décharger 195
ServerRoot 11 desservir le contenu 144
ServerTokens 116 et démarrage 141
Serveur fonctionnement 130
arrêt 12 hôtes virtuels 96
arrêter 32 hôtes virtuels sur le nom 144
configuration minimale 140 tester les sites 148
226 SSLCryptoDevice
VirtualDocumentRootIP 97 W
VirtualHost 88, 89
VirtualScriptAliasIP 97
WebDAV 152, 153
Virtuel
et HTTP 154
hébergement 87, 88
Windows, accès à DAV 159
basé sur le nom 90
Worker 207
configurer 89, 91
modules 97
hôte 96
configurer 92, 93
déboguer 95
vlogger 59
vmstat 170
Vol de bande passante 117
INDEX
228 Worker
INDEX
LE GUIDE DE SUR VIE
Daniel Lopez LE GUIDE DE SURVIE
LE GUIDE DE SURVIE
Apache
L’ESSENTIEL DU CODE ET DES COMMANDES
Ce Guide de survie est le compagnon indispensable pour ne
jamais vous sentir perdu dans un environnement Apache.
Vous y trouverez en un clin d’œil les principales commandes
Apache
et lignes de code pour amener un serveur Web Apache à
Apache
répondre à vos besoins, que vous exécutiez des domaines
virtuels complexes desservant des millions de pages par
jour ou un simple serveur de test tournant sur un portable.
CONCIS ET MANIABLE
Facile à transporter, facile à utiliser — finis les livres
encombrants ! L’ESSENTIEL DU CODE ET DES COMMANDES
PRATIQUE ET FONCTIONNEL
Plus de 100 fragments de code et commandes
personnalisables pour gérer efficacement un serveur
Apache dans toutes les situations.
Niveau : Intermédiaire
Catégorie : Web
Configuration : Multi-plateforme