# Serveur web

Un serveur web est soit un logiciel de service de ressources web (serveur HTTP), soit un serveur informatique (ordinateur) qui répond à des requêtes du World Wide Web sur un réseau public (Internet) ou privé (intranet)$^,$$^,$, en utilisant principalement le protocole HTTP.
Un serveur informatique peut être utilisé à la fois pour servir des ressources du Web et pour faire fonctionner en parallèle d'autres services liés, comme l'envoi de courriers électroniques, l'émission de flux en streaming, le stockage de données dans des bases de données, le transfert de fichiers par FTP.

## Présentation

Les serveurs web publics sont reliés à Internet et hébergent des ressources (pages web, images, vidéos, etc.) du Web. Ces ressources peuvent être statiques (servies telle quelles) ou dynamiques (construites à la demande par le serveur).
Certains serveurs sont seulement accessibles sur des réseaux privés (intranets) et hébergent des sites utilisateurs, des documents, ou des logiciels, internes à une entreprise, une administration, etc.
Techniquement il serait possible qu'un même ordinateur remplisse ces deux fonctions, mais c'est rarement le cas pour des raisons de sécurité. La fonction principale d'un serveur Web est de stocker et délivrer des pages web qui sont généralement rendues en HTML. Le protocole de communication Hypertext Transfer Protocol (HTTP) permet le dialogue via le réseau avec le logiciel client, généralement un navigateur web.

## Logiciel de serveurs HTTP

Les deux termes sont utilisés pour le logiciel car le protocole HTTP a été développé pour le Web, et les pages web sont en pratique toujours servies avec ce protocole. Cependant d'autres ressources du Web comme les fichiers à télécharger ou les flux audio ou vidéo sont parfois servis avec d'autres protocoles, telle que, par exemple, le protocole de transport Temps Réel (Real-time Transport Protocol), ainsi que son pendant sécurisé, le protocole de transport sécurisé Temps Réel (Secure Real-time Transport Protocol).

### Exemples de serveur HTTP

Part de marché du million de serveurs les plus actifs
* Apache (42,5 %)
* NGINX (40,1 %)
* IIS (11,9 %)
* LiteSpeed (2,3 %)
* Google Servers (1,4 %)
CERN httpd est le premier serveur HTTP, inventé en même temps que le World Wide Web, en 1990 au CERN de Genève. Il est rapidement devenu obsolète en raison de l'évolution exponentielle des fonctionnalités du protocole.
Quelques serveurs HTTP :
* Apache HTTP Server de la Apache Software Foundation, successeur du NCSA HTTPd ;
* Apache Tomcat de l'Apache Software Foundation, évolution de Apache pour J2EE ;
* BusyBox httpd, utilisé dans le domaine de l'informatique embarquée, et notamment avec OpenWrt ;
* Google Web Server de Google ;
* Internet Information Services (IIS) de Microsoft ;
* lighttpd de Jan Kneschke ;
* Monkey web server de Eduardo Silva Pereira, dédié au noyau Linux, permettant d'utiliser pleinement ses fonctionnalités ;
* NGINX d'Igor Sysoev ;
* Hiawatha de Hugo Leisink
* Node.js sous licence MIT conçu par Ryan Lienhart Dahl en lignes de programmation en JavaScript ;
* Oracle iPlanet Web Server de Sun Microsystems (anciennement iPlanet de Netscape, puis Sun ONE de Sun Microsystems) ;
* Tengine, fork de nginx, de Taobao (9e rang mondial Alexa en juillet 2014) ;
* Zeus Web Server de Zeus Technology ;
* Gunicorn est un serveur web HTTP WSGI écrit en Python pour Unix ;
* Zazouminiwebserver, serveur extrêmement léger (approx. 500 kilooctets), sous environnement Microsoft Windows.
* Abyss Web Server, un serveur gratuit, multi-plateforme (Linux, Windows, MacOS, BSD), permettant un paramétrage très facile via une interface graphique multilingue.

### Part de marché

Le serveur HTTP le plus utilisé est Apache HTTP Server qui sert environ 55 % des sites web en janvier 2013 selon Netcraft.
Le serveur HTTP le plus utilisé dans les mille sites les plus actifs est en revanche NGINX avec 38,2 % de parts de marché en 2016 selon w3techs et 53,9 % en avril 2017
Historiquement, d'autres serveurs HTTP importants furent CERN httpd, développé par les inventeurs du Web, abandonné le 15 juillet 1996 et NCSA HTTPd, développé au NCSA en même temps que NCSA Mosaic, abandonné mi-1994, ainsi que WebObjects.
Il existe aussi des serveurs HTTP qui sont des serveurs d'applications capables de faire serveur HTTP, comme Caudium et GlassFish. À l'inverse, on peut trouver des serveurs HTTP spécialisés dans un service distinct comme : HTTP File Server qui est uniquement destiné au partage de fichiers Le logiciel serveur HTTP ou daemon HTTP est le logiciel prenant en charge les requêtes client-serveur du protocole HTTP développé pour le World Wide Web. Ces logiciels intègrent généralement des modules permettant d'exécuter un langage serveur comme PHP pour générer des pages web dynamiques. Les plus connus sont Apache, NGINX, IIS, et Lighttpd.

## Autres logiciels usuels

Le plus souvent, un serveur Web exécute continuellement d'autres logiciels qui fonctionnent en collaboration avec le logiciel de serveur HTTP. Selon les besoins, certains services gourmands en ressources, comme le serveur de base de données, peuvent être situés sur la même machine ou un serveur spécialisé.
Certaines combinaisons de logiciels de base sont connues sous différents acronymes, notamment celle d'Apache (serveur HTTP) logiciel installé et exécuté sur le serveur web en parallèle de MySQL (serveur de base de données) et le script d'interprétation et d'exécution de PHP (voire PHP-FPM).
Voir en PDF l'introduction « Qu'entend-t-on par serveur HTTP et serveur Web ? » d'Anthony Garcia (2008) - IBISC :
* LAMP pour « Linux, Apache, MySQL, PHP » ;
* WAMP pour « Windows, Apache, MySQL, PHP » ;
* MAMP pour « Macintosh, Apache, MySQL, PHP ».
Il existe aussi la distribution de Microsoft nommée IIS pour « Internet Information Services » qui comprend plusieurs services : HTTP, FTP, SMTP et NNTP.

## Problématiques
### Équilibrage de charge

L’équilibrage de charge des serveurs web, ou répartition de charge des serveurs Web, regroupe l’ensemble des mécanismes utilisés pour distribuer les requêtes sur de multiples serveurs Web. Cette pratique est devenue indispensable depuis l’explosion du trafic du Web qui a pour conséquence un accroissement important de la charge demandé au serveur. Cela a entraîné une évolution des architectures, destinée à apporter plus d'extensibilité, de disponibilité et de performances.