Вы находитесь на странице: 1из 23

Le protocole http

Mise en uvre du Serveur Web Apache

HTTP : Historique
Invent par Tim Berners-Lee
Premire Version publique en 1990 : http/0.9
Premier Navigateur Web MOSAIC en 1993 sous X-Windows
1994 : Netscape Navigator
1995 : Internet Explorer
Premire Version standardise par l'IETF en 1996 : http/1.0 (RFC 1945)
Version actuelle finalise en 1999 : http/1.1 (RFC 1068, RFC 2616)
2004 : Mozilla Firefox
2008 : Google Chrome

HTTP: Communication Client/Serveur


Le client et le serveur communique sur le port TCP 80

Envoi des en-ttes http


Localisation du fichier

Requte
http

Rponse
http
Envoi des en-ttes http
de rponse

Client

Stockage
des
fichiers

Cration des en-ttes


Formatqge des donnes

Serveur
Web

HTTP : requtes / rponses


LURL saisie dans la barre dadresse du navigateur :
http://www.dom99.net/demo.html

Par dfaut HTTP utilise le port TCP 80

Exemple de requte mise par le client (le navigateur, ici IE8 sous Windows Seven) :
GET /demo.html HTTP/1.0
Host: www.dom99.net
Referer: http://www.dom99.net
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)
Exemple de rponse mise par le serveur (ici Apache )
HTTP/1.0 200 OK
Date: Fri, 31 Jan 2014 08:30:00 GMT
Server: Apache/2.2.3(Debian)
Content-Type: text/html
Content_Lenght: 59
Expires: Sat, 31 Jan 2014 08:30:00 GMT
Last-Modified: Fri, 09 Aug 2013 14:25:21 GMT

HTTP : Mthodes
Les plus utilises dans la pratique :
GET : rcupration du contenu du document (passage d'arguments dans l'URL)
POST : envoi de donnes au serveur

(donnes traites cot serveur)

HEAD : rcupration des enttes de la rponse uniquement


Il en existe d'autres : PUT, DELETE, CONNECT

HTTP: En-ttes cot client (requte)


Extrait de la RFC 2616
Host : Nom de lhte virtuel interrog
Referer : Site de provenance de la requte (provenance des visiteurs)
User-Agent : Navigateur qui effectue la requte
Accept : Types de fichiers accepts en rponse
Accept-Language : Langue souhaite en rponse
Authorization : Informations dauthentification
Connection : Gestion des connexions persistantes en http/1.1

HTTP: En-ttes cot serveur (rponse)


Extrait de la RFC 2616
Date : Date de gnration de la rponse
Server : Nom et Version du logiciel serveur qui a rpondu
Content-Type : Format de la donne retourne (text/html)
Content-Length : Taille totale des donnes retournes
Expires : Date dexpiration du fichier
Last-Modified : Date de dernire modification du fichier

HTTP : Les codes rponses


Les plus courants :
200 : OK
301 : Document dplac de manire permanente
307 : Dplacement temporaire
401 : Unauthorized (Forbidden) Ressource protge
404 : Not Found Document non trouv
405 : Mthode (GET,POST ou HEAD) incorrecte
500 : Internal Server Error Le serveur rencontre un problme interne
503 : Service Unavailable Le server est temporairement indisponible

La fondation Apache
Apache Software Foundation : www.apache.org
Organisation but non lucratif
Fonde en 1999 (le serveur HTTP a t cr en 1995)
Supporte aujourdhui plus de 100 projets dont :
Apache HTTP Server
Apache Directory (annuaire LDAP)
OpenOffice.org (depuis 2011)
SpamAssassin
Subversion (Logiciel de gestion de versions)
Tomcat (Serveur Web crit en Java)

Tous les dveloppeurs et administrateurs sont bnvoles.


Les logiciels sont protgs par le licence Apache compatible GNU GPL v3.

Le projet Apache HTTP Server


Cr en 1995 pour amliorer le serveur HTTP du NCSA (Mosac)
8 dveloppeurs forment : The Apache Group
En 1999, la fondation Apache est forme pour mieux grer le projet.
Depuis 1996, Apache HTTP Server est le serveur web le plus populaire.
En 2012, il dessert plus de 60% des sites webs.
Ses principaux concurrents : Microsoft IIS (15%), Nginx (16%)

Evolution des Versions :


1995 : Version 1.0
1999 : Version 1.3
2002 : Version 2.0
2005 : Version 2.2
2012 : Version 2.4

Apache HTTP Server


Structure modulaire

Toutes les fonctionnalits de base ou complmentaires sont dveloppes sous forme de


modules.

Quelques exemples :
Les htes virtuels (module core). Un seul serveur Apache peut desservir de nombreux sites diffrents.
Chiffrement (module mod_ssl). Support du protocole scuris HTTPS (port 443)
Authentification . De nombreux modules proposent des fonctionnalits en termes dauthentification des
utilisateurs.
Alias et Redirection De nombreuses approches permettent de choisir les pages afficher en fonction de
leurs emplacements (mod_alias) ou en fonction de lURL (mod_rewrite)
Apache peut tre utilis comme Proxy (mod_proxy) ou Reverse Proxy. Il permet aussi de faire de la
rpartition de charges.
WedDAV (mod_dav). Le protocole WebDAV permet dimplmenter des mthodes http supplmentaires.
Journalisation. Apache peut enregistrer des journaux (logs) afin de tracer dventuels problmes mais aussi
les requtes faites par les clients.
Scurit. Il est possible de mettre en uvre des processus de filtrage de requtes afin dempcher certains
types dattaques comme le Cross-Site Scripting ou les injections SQL.

Apache HTTP Server


Installation
Apache est fourni sous forme de paquets dans la majorit des distributions.
Par exemple sous Debian, linstallation de base se limite un simple :
apt-get install apache2

Un choix peut tout de mme tre fait lors de linstallation, celui du MPM
(Multi-Processing Modules) grant la manire dont les connexions au
serveur sont gres.
Par dfaut le MPM Worker est install, mais dautres choix sont proposs :
mpm-prefork
mpm-event
mpm-itk

Apache HTTP Server


mpm-worker
Module install par dfaut avec Apache2.
Il utilise les threads qui partagent tous le mme espace mmoire.
La configuration de base :
StartServers : Nombre de processus lancer au dmarrage (dfaut : 3)
ServerLimit : Nombre de processus maximum pouvant tre lancs.
ThreadsPerChild: Nombre de threads crs au sein de chaque processus.
ThreadsLimit: Nombre de threads maximum par processus.
MaxClients: Nombre total de requtes traites simultanment.
MaxRequestsPerChild: Nombre de requtes traites par un processus.

Apache HTTP Server


mpm-prefork
Mode de fonctionnement dApache 1.3
Les connexions sont traites par des forks . Les processus et leurs espaces
mmoires sont compltement isols les uns des autres.
La configuration de base :
StartServers : Nombre de processus lancer au dmarrage (dfaut : 5)
MaxClients: Nombre total de requtes traites simultanment.
ServerLimit : Nombre de processus maximum pouvant tre lancs.
MinSpareServers: Nombre minimum de processus en attente de requtes.
MaxSpareServes: Nombre maximum de processus en attente de requtes.
MaxRequestsPerChild: Nombre maximal de requtes traites par processus.

Apache HTTP Server


Configuration
Dossier /etc/apache2
Fichier de configuration principal: apache2,conf
(Il appelle les autres fichiers de configuration avec linstruction : Include)
Les autres fichiers sont rpartis dans diffrents sous-dossiers :
httpd.conf : compatibilit vers apache 1.3
ports.conf : ports TCP en coute (80 pour http, 443 pour https)
conf.d: Elments de configuration complmentaires (alias par exemple)
mods-enabled : Modules activs (liens symboliques vers mods-availables)
sites-enabled: Liens vers les fichiers de configuration des sites actifs

Apache HTTP Server


Les modules
Les modules disponibles et installs sont dans /etc/apache2/mods-available.
Chaque module est compos de deux fichiers :
.load qui regroupent les directives de chargement du module
.conf qui contient la configuration du module

Lorsquun module est activ, des liens symboliques vers les deux fichiers sont crs
dans le dossier /etc/apache2/mods-enabled
Pour activer un module : a2enmod NomDuModule
Pour dsactiver un module : a2dismod NomDuModule

Apache HTTP Server


Les sites
La configuration de chacun des sites grs sur le serveur est stocke dans :
/etc/apache2/sites-available.
Lorsquun site est actif, un lien symbolique vers son fichier de configuration
est cr dans /etc/apache2/sites-enabled
Pour activer un site : a2ensite NomDuSite
Pour dsactiver un site : a2dissite NomDuSite
Lors de linstallation le site default est cr. Il indique notamment que les
pages web de ce site doivent tre enregistres dans le dossier /var/www
La page index.html de ce site affiche simplement : it works !!!

Apache HTTP Server


Rsum de l'arborescence
apache.conf
httpd.conf
ports.conf

conf.d

phpmyadmin.conf

sites-available

default

sites-enabled

Lien vers default

mods-available

mod_php5

mods-enabled

Liens vers
mod_php5

/etc/apache2

/var/www

Index.html.

Les htes virtuels


Permettent de grer plusieurs sites web avec des noms de domaines
diffrents sur un seul serveur Apache (avec une ou plusieurs IP)
Les noms de domaine doivent au pralable avoir t correctement
dclars sur les serveurs DNS.
La valeur de host place dans l'en-tte de la requte http permet
Apache de dterminer les fichiers utiliser pour la rponse.
Chaque hte virtuel doit tre dcrit dans un fichier de configuration
spar. Ce fichier doit tre dans /etc/apache2/sites-available
Les sites sont ensuite activs avec la commande a2ensite

Les htes virtuels


Configuration
Exemple de fichier de configuration :
<VirtualHost *:80>
ServerName www.dom99.net
ServerAlias dom99.net

nom attendu dans l'URL


alias du nom (CNAME)

DocumentRoot /var/www/dom99
DirectoryIndex index.php

Emplacement des pages web


Page web par dfaut du site

[]
</virtualHost>

Remarque : pour les htes virtuels soit pris en compte la Directive


NameVirtualHost doit tre dfinie dans le fichier ports.conf

Configuration d'un site


Contextes
Chaque paramtre (ou Directive)
peut tre dfini dans un ou plusieurs contextes:
Le contexte global (tout le serveur).
Exemple : NameVirtualHost dans le fichier ports.conf
Le contexte de l'hte virtuel.
Exemple : DocumentRoot entre les balises <VirtualHost></VirtualHost>
Le contexte d'un rpertoire.
Il suffit de placer les Directives entre des balises <Directory>
Les fichiers .htaccess permettent aussi de dfinir des contextes.
Les Directives de ces fichiers ne sont actifs que dans les dossiers (et sous-dossiers)
o ils sont placs.

Configuration d'un site


Directives

DocumentRoot :

Le rpertoire de stockage des pages

DirectoryIndex

La page par dfaut du site

Options

None

: aucune options d'actives dans le contexte

All

: toutes les options sauf MultiViews

FollowSymLinks : permet au serveur de suivre les liens symboliques

Indexes : permet d'afficher le contenu d'un rpertoire si aucune page index ne s'y trouve.

Active le mcanisme de multivues (Ngociation http 1.1)

ExecCGI autoris l'excution de scripts CGI

Order, Allow, Deny :

Exemple :

Autorisations d'accs
Order allow, deny
Allow from 192.168.99.3
Deny from all

Alias : Permet de faire pointer une adresse Web vers un autre dossier

Exemple :

Alias /phpmyadmin /usr/share/phpmyadmin

Rfrences
Les guides de Linux magazine H.S n 66 APACHE
Le site www.apache.org

Вам также может понравиться