# Hiawatha (serveur HTTP)

Hiawatha est un serveur web disponible pour divers systèmes d'exploitation. Il est développé par le Néerlandais Hugo Leisink depuis 2002.
Hiawatha est le nom d'un héros de certains Amérindiens d'Amérique du Nord.

## Historique

Le développement de Hiawatha démarre en janvier 2002 ; il est conçu à l'origine comme petit serveur web, adapté à des serveurs anciens ou déclassés. Hugo Leisink, qui est à ce moment-là étudiant en informatique, le destine à être installé dans les résidences étudiantes de Delft (Hollande-Méridionale) aux Pays-Bas. En raison de l'inclination de Leisink pour les questions de sécurité informatique, toute sorte de fonctions relatives à ce domaine particulier sont intégrées de façon expérimentale à Hiawatha ; il en résulte un serveur HTTP très orienté sécurité.
L'édition de janvier 2009 de Linux Magazine contient un article présentant Hiawatha.
Le 18 février 2019, Hugo Leisink annonce sur le blog du projet l'arrêt du développement de nouvelles fonctionnalités, par manque d'intérêt et pour se consacrer à d'autres projets ; les versions à venir du serveur ne seront plus basées que sur la satisfaction de ses besoins personnels et non sur ce que l'on serait en droit d’attendre d'un serveur web moderne tel HTTP/2.
La version 11 sort en juillet 2021.

### Sorties majeures

* 1.0 : septembre 2002. Première version d'un serveur web encore basique mais déjà fonctionnel.
* 2.0 : mars 2004. Utilisation du multithreading au lieu de forking.
* 3.0 : septembre 2004. Prise en charge de SSL.
* 4.0 : décembre 2005. Un wrapper CGI visant une sécurité améliorée est inclus.
* 5.0 : octobre 2006. Prise en charge de FastCGI.
* 5.2 : novembre 2006. Introduction de Hiawatha dans l'arbre des ports de FreeBSD alors en version 5.2 ; OpenBSD l'intègre également à sa sortie en version 5.7 en mars 2007.
* 5.12 : août 2007. Apport de la réécriture d'URL.
* 6.0 : octobre 2007. Gestion d'IPv6.
* 6.6 : avril 2008. Gestion de XSLT.
* 6.10 : octobre 2008. Ajout d'un mécanisme pour lutter contre la cross-site request forgery.
* 7.0 : février 2010. Prise en charge du monitoring distant.
* 8.0 : janvier 2012. Autoconf est remplacé par CMake, OpenSSL par PolarSSL.
* 9.0 : mars 2013. Les connexions clientes sont désormais prises en charge par un pool de threads au lieu de créer les threads à la volée.
* 10.0 : novembre 2015, des changements significatifs dans la syntaxe de configuration
* 11.0 : juillet 2021. La bibliothèque TLS est mise à jour à la version v3.0.0.

## Fonctions

Hiawatha met en œuvre ce qui est généralement attendu d'un serveur web moderne et notamment :
* CGI et FastCGI
* Gestion de grands fichiers
* Fonction de proxy inverse
* Gestion du chroot
* Réécriture d'URL
* Prise en charge de SSL et de TLS
* Authentification HTTP (Basic et digest)
* Traffic shaping (régulation de flux)
* Gestion d'IPv6
* Compression HTTP via gzip
* Hébergement virtuel
* Gestion de WebDAV
* Prise en charge de Server Name Indication à partir de la v8.6
Hiawatha présente de nombreuses fonctions axées sur la sécurité que peu de ses concurrents mettent en œuvre ; ainsi Hiawatha embarque des protections contre les injections SQL, contre les failles cross-site scripting (XSS) et cross-site request forgery (CSRF), contre les attaques par déni de service (DoS), contre les liens externes vers des images, ainsi qu'une interdiction paramétrable contre d'éventuels programmeurs malintentionnés ; enfin Hiawatha peut limiter l'exécution de script CGI pour en limiter l'emballement qui provoque généralement une perte de contrôle du serveur.

## Performance

Même si Hugo Leisink se concentre avant tout sur les aspects relatifs à la sécurité, Hiawatha se comporte bien en matière de vitesse et de performance. Selon des tests de performance réalisés par un chercheur indépendant (SaltwaterC), Hiawatha rivalise avec ses concurrents pour sa vitesse à délivrer du contenu statique$^,$. Hiawatha gère FastCGI en combinaison avec l'équilibrage de charge et dispose de son propre utilitaire PHP-FastCGI, ce qui le rend rapide et apte à la montée en charge pour servir du contenu dynamique.

## Utilisation

Les statistiques sur l'usage de Hiawatha sont fréquemment sous-estimées. En raison de l'accent qu'il met sur la sécurité, le serveur HTTP Hiawatha peut rejeter des requêtes de robots n'étant pas identifiés comme les robots d'indexation des moteurs de recherche, parmi lesquels peuvent se trouver les robots d'entités collectant simplement des statistiques.