Comparaison des serveurs Apache, Nginx et IIS

 

 

 

 

 

 

 

Présentation d’un serveur HTTP

 

Un serveur web ou serveur HTTP est un ordinateur avec un logiciel qui traite les demandes et envoi des requête par le protocole HTTP.

Le HTTP qui signifie Hypertext Transfer Protocol est un protocole de communication client-serveur pour le World Wide Web. Le HTTPS qui signifie HyperText Transfer Protocol Secure est une adaptation du protocole HTTP pour une communication sécurisée. Dans le HTTPS, le protocole de communication est crypté par TLS (Transport Layer Security) ou SSL (Secure Sockets Layer).

Communication serveur et clients

 

La communication client-serveur est une structure d'application distribuée qui partitionne des tâches ou des charges de travail entre les fournisseurs d'une ressource ou d'un service, appelés serveurs, et les demandeurs de services, appelés clients.

 

Souvent, les clients et les serveurs communiquent par un réseau informatique sur un matériel distinct, mais le client et le serveur peuvent aussi résider dans le même système avec une adresse IP locale (l’adresse IP locale est toujours 127.0.0.1).

Un serveur exécute un ou plusieurs programmes qui ensuite partagent leurs ressources avec des clients en envoyant des informations en HTTP/HTTPS. Un client ne partage aucune de ses ressources, mais demande la fonction de contenu ou de service d'un serveur en envoyant des requêtes HTTP/HTTPS. Les clients lancent donc des sessions de communication avec des serveurs qui attendent des demandes.

 

Voici un schéma qui montre de façon plus détaillé la communication client-serveur ainsi que les traitements qui s’effectue dans le serveur :

 

Dans ceux schémas on peut voir que quand il y a par exemple 3 clients qui envoi des requêtes HTTP/HTTPS à un serveur, le serveur HTTP (ici le cas du serveur Apache) qui se situe dans la machine qui a le rôle de serveur, lance plusieurs processus pour effectuer les traitement PHP (langage de programmation qui signifie Hypertext Preprocessor) en parallèle. Ces traitements peuvent parfois accéder à des bases de données (ici le cas de la base de données MySQL) pour injecter ou récupérer certaines informations en fonction des requêtes que le serveur HTTP reçoit.

 

Le serveur Apache

 

Le serveur HTTP Apache est un logiciel de serveur web multiplateforme gratuit et open-source, publié sous les termes de la licence Apache 2.0.

 

Apache est développé et maintenu par une communauté ouverte de développeurs sous les auspices de la Fondation Apache Software.

 

Le serveur HTTP Apache est multi-plateforme ; depuis le 1er juin 2017, 92% des copies du serveur Apache HTTPS s'exécutent sur des distributions Linux. La version 2.0 améliore la prise en charge des systèmes d'exploitation non Unix tels que Windows et OS / 2. Les anciennes versions d'Apache ont été portées pour fonctionner sur OpenVMS et NetWare. Il est écrit en langage C et XML.

Le serveur Apache fonctionne principalement sur les systèmes d'exploitation UNIX (LinuxMac OS XSolarisBSD et UNIX) et Windows. La version Windows n'est considérée comme stable que depuis la version 1.2 d'Apache.

Initialement basé sur le serveur NCSA HTTPd, le développement d'Apache a commencé au début de 1995 après le blocage du code NCSA. Au début, il s'agissait d'une collection de correctifs et d'additions au serveur NCSA HTTPd 1.3, qui était dans le domaine public et le serveur HTTP le plus répandu. Apache a joué un rôle clé dans la croissance initiale du World Wide Web, dépassant rapidement NCSA HTTPd comme serveur HTTP dominant, et est resté le plus populaire depuis avril 1996. En 2009, il est devenu le premier logiciel de serveur Web à servir plus 100 millions de sites Web. En juillet 2016, on estimait qu'il desservait 46% de tous les sites Web actifs et 43% des millions de sites Web les plus importants.

 

Voici la page du site officiel du serveur Apache : https://httpd.apache.org/

 

Voici les commandes d’installation des paquets pour le serveur Apache sur Ubuntu :

  1. sudo apt-get update
  2. sudo apt-get install apache2 libapache2-mod-php7.0 php7.0 php7.0-mysql mysql-server mysql-client
  3. sudo apt-get install phpmyadmin php-mbstring php-gettext
  4. sudo a2enmod rewrite

 

Puis en tapent l’IP du serveur sur lequel est installé Apache on obtient cette page sur le navigateur.

 

 

Le serveur Nginx

 

Nginx est un serveur Web qui peut également être utilisé comme proxy inverse, équilibreur de charge et cache HTTP.

Le logiciel a été créé par Igor Sysoev et publié pour la première fois en 2004. Igor Sysoev a commencé le développement de Nginx en 2002. À l'origine, Nginx a été développé pour résoudre le problème des sites russe à très fort trafic. Une société du même nom a été fondée en 2011 par Igor Sysoev pour fournir des produits commerciaux et un soutien pour le logiciel Nginx. Nginx est un logiciel libre et open source, publié sous les termes d'une licence de type BSD (Berkeley Software Distribution License). Il est entièrement écrit en langage C. Une grande partie des serveurs Web utilisent Nginx, souvent en tant qu'équilibreur de charge.

Nginx utilise une approche asynchrone axée sur les événements pour gérer les demandes. L'architecture modulaire pilotée par les événements de Nginx, peut fournir des performances plus prévisibles sous des charges élevées. Nginx fonctionne sous les systèmes d'exploitation GNU, LinuxBSDMac OS X et Solaris ; à partir de la version avancée 0.7.52. Il est également disponible pour Microsoft Windows.

 

Voici la page du site officiel du serveur Nginx : https://nginx.org/

 

Sur cette page sont disponibles toutes les dernières versions du serveur Nginx classé par années.

 

Voici les commandes d’installation des paquets pour le serveur Nginx sur Ubuntu :

  1. sudo apt-get update
  2. sudo apt-get install nginx

 

Puis en tapent l’IP du serveur sur lequel est installé Nginx on obtient cette page sur le navigateur :

 

Le serveur IIS

 

Internet Information Services (IIS) est un serveur Web extensible créé par Microsoft pour une utilisation avec la famille Windows NT.

 

IIS prend en charge HTTP, HTTP / 2, HTTPS, FTP, FTPS, SMTP et NNTP. Il a été une partie intégrale de la famille Windows NT depuis Windows NT 4.0, bien qu'il puisse être absent dans certaines éditions (par exemple Windows XP Home Edition), et n'est pas actif par défaut. Il est entièrement écrit en C++, qui est la version orientée objet du C.

IIS fonctionne que sous le système d'exploitation Windows de Microsoft. Il est disponible que sur les système Windows et aucun autre système. Le serveur IIS a était publié pour la première fois en 1995. La dernière version stable de IIS (version 10.0) est apparue en 2015.

 

Voici la page du site officiel du serveur IIS : https://www.iis.net/

 

Dans Windows 10, IIS est considéré comme une fonctionnalité Windows et il est désactivé par défaut.

Pour l’installer il faut ouvrir le panneau de configuration.

 

Aller dans Programmes puis dans "Activer ou désactiver des fonctionnalités Windows".

 

Puis cocher la case du dossier Internet Information Services.

 

Ouvrir le dossier Internet Information Services pour explorer et activer tous les sous-composants supplémentaires dont vous avez besoin.

 

Cliquer OK pour valider.

IIS est maintenant installer.

 

Puis en tapent l’IP du serveur sur lequel est installé IIS on obtient cette page sur le navigateur :

 

 

Comparaison des serveurs niveau fonctionne sur les systèmes d'exploitation 

 

 

  Nginx Apache Microsoft IIS
Windows Oui Oui Oui
Linux Oui Oui Non
MacOS Oui Oui Non
BSD Oui Oui Non
Solaris Oui Oui Non
eComStation Non Oui Non
OpenVMS Non Oui Non
AIX Oui Oui Non
z/OS Non Oui Non
HP-UX Oui Oui Non

 

 

D’après ce tableau, on peut voir qu’Apache fonctionne sur tous les systèmes d’exploitation présent et que Microsoft IIS reste que dans l’environnement Microsoft car il fonctionne que sur le système d’exploitation Windows.

Nginx ne fonctionne pas juste sur trois systèmes, mais c’est trois systèmes sont sans importance car ils ont disparue depuis longtemps et donc il y a pas d’intérêt d’y installer des serveur HTTP, donc Nginx fonctionne sur tous les systèmes d’exploitation qui sont en se moment utilisé.

 

Comparaison des serveurs niveau caractéristique

 

    Nginx Apache Microsoft IIS
 

 

Sécurité

Authentification d’accès de base Oui Oui Oui
Digest access authentication Oui (module) Oui Oui
SSL/TLS

HTTPS

Oui Oui Oui
 

 

 

 

 

 

 

 

 

Contenu dynamique

Service d'hébergement Web partagé Oui Oui Oui
Common Gateway Interface Non Oui Oui
FastCGI Oui Oui Oui
Simple Common Gateway Interface Oui Oui Oui
Web Server Gateway Interface Oui Oui Non
Java servlet Non Non Non
Server Side Includes Oui Oui Oui
Internet Server Application Programming Interface Non Oui Oui
 

 

 

Autres

Fonctionne dans l'espace utilisateur ou l'espace noyau Utilisateur Utilisateur Noyau et Utilisateur
Console d’administration Oui Oui Oui
IPv6 Oui Oui Oui
HTTP/2 Oui Oui Oui

 

 

Comparaison des serveurs niveau rapidité, fonctionnement et performance

 

Apache

Le serveur Web Apache dispose d'un riche ensemble de fonctionnalités qui peuvent être activées en installant l'un des 60 modules officiels ou l'un des nombreux autres modules non officiels qui existent également.

La méthode de traitement des requêtes du serveur Apache peut être configurée de trois manières différentes :

 

  • Modèle de processus : Ceci est la méthode originale ; il ne s'adapte pas bien avec de nombreuses connexions simultanées, car il consomme beaucoup de RAM et peut même refuser les connexions à des charges élevées.

 

  • Modèle de travailleur : Cela crée un processus de contrôle unique responsable du lancement des processus enfants. Chaque processus enfant crée ensuite un nombre fixe de threads (processus), ainsi qu'un thread d'écoute. Le thread d'écoute écoute les connexions et les transmet à un thread pour le traitement lorsqu'elles arrivent.

 

  • Modèle d’événement : Ce modèle est similaire au modèle de travail, mais il crée un thread d'écoute qui écoute les connexions et les transmet à un thread de travail pour traitement. Depuis Apache 2.4, le modèle d'événement a été jugé stable et est maintenant aussi le paramètre par défaut si le système d'exploitation peut le prendre en charge.

 

 

Il est aussi possible d’essayer les options de compilation et d'exécution pour améliorer les performances d'Apache.

 

Nginx

NGINX a été créé en réponse au problème C10K qui et de gérer au moins 10 000 connexions client simultanées sur un seul serveur.

NGINX utilise une architecture événementielle asynchrone pour gérer ces quantités massives de connexions. Cette architecture rend la gestion des charges élevées et fluctuantes beaucoup plus prévisible en termes d'utilisation de la RAM (mémoire), d'utilisation du processeur et de latence.

 

Voici l’architecture de fonctionnement de Nginx :

 

La principale différence qu’il y a entre NGINX et Apache, en termes de modèles d'événements, est que NGINX ne configure pas de processus de travail supplémentaires par connexion. Dans la plupart des cas, la configuration NGINX recommandée exécute un processus de traitement par CPU, ce qui maximise l'efficacité du matériel.

NGINX possède également un ensemble de fonctionnalités et peut effectuer différents rôles de serveur :

  • Il a un serveur proxy inverse pour les protocoles HTTP, HTTPS, SMTP, POP3 et IMAP
  • Il a un équilibreur de charge et un cache HTTP
  • Il a un proxy avant pour Apache et d'autres serveurs web, combinant la flexibilité d'Apache avec les performances de contenu statique de NGINX

NGINX prend en charge les gestionnaires FastCGI et SCGI pour la diffusion de scripts de contenu dynamique tels que le PHP et le Python.

 

Comparaison du serveur Apache avec le serveur Nginx

Connections concurrent par rapport la mémoire et les requêtes par secondes

Des testes on était effectué pour comparer le serveur Apache et Nginx.

Voici les statistiques du test sur l’utilisation de la mémoire pour des connections parallèles par les deux serveur HTTP :

 

Comme vous pouvez le voir, Nginx dépasse Apache avec une grande différence au niveau de l’utilisation de la mémoire.

Si Apache utilise autant de mémoire en fonction des connections sur le serveur, c’est parque pour gérer des demandes supplémentaires, il génère de nouveaux threads (processus). Et quand il y a de plus en plus de connexions sur serveur, de plus en plus de processus Apache sont créés pour les gérer et donc, cela entraîne une croissance assez rapide de l'utilisation de la mémoire.

On voit aussi que Nginx a une utilisation de la mémoire assez statique.

Voici les statistiques du test pour le nombre de requête par seconde par apport les connections parallèles :

 

Comme vous pouvez le voir, Nginx est nettement supérieurs du serveur Apache dans le nombre de requêtes/s qu'il peut servir. Aux niveaux supérieurs de connections, il peut gérer moins de requêtes/s, mais toujours plus qu’Apache.

Cependant, les résultats affichés montrent que les performances relatives et non absolues, car les tests ont été menés localement sur le serveur.

Tout c’est résultat des graphiques était pour des connections concurrent (parallèles).

 

Sécurité

Les deux serveurs ont un excellent historique de sécurité pour leur base de code basée sur C. Cependant, la base de code du serveur Nginx, est significativement plus petite de plusieurs ordres de grandeur, ce qui est un gros plus d'une perspective de sécurité avant-gardiste.

 

Flexibilité

Les personnalisations au serveur Web peuvent être effectuées en écrivant des modules. Apache a eu le chargement de module dynamique pour le plus long temps, donc tous les modules Apache le supportent.

Mais ce n’est pas le cas pour Nginx. C’est en 2016 que NGINX a pris en charge le chargement dynamique des modules ; auparavant, NGINX demandait à l'administrateur de compiler les modules dans le binaire Nginx.

Microsoft IIS

Comme Apache, IIS utilise également des extensions Web externes pour implémenter certaines fonctionnalités. Et IIS offre un support solide pour les produits Microsoft .NET (framework) et ASPX (scripting).

IIS propose des outils de diagnostic approfondis tels que le suivi des demandes ayant échoué, la surveillance des demandes et les données d'exécution, en plus du support de l'hébergement virtuel. Mais une préoccupation majeure est que le choix de IIS nécessite également de choisir Windows, avec ses implications coûteuses et de sécurité par rapport à Linux.

 

IIS est signalé comme étant légèrement moins bon par rapport à Apache en termes de performance. Cependant, la particularité de IIS est qu’il est entièrement lié à Windows (par exemple, IIS peut facilement transmettre et recevoir des threads de processus à partir du système d'exploitation Windows). Mais malgré cette intégration, IIS est toujours battu en termes de performance par le serveur Apache et surtout par le serveur Nginx.

 

Comparaison des serveurs niveau utilisation par les sites web

 

Les résultats des statistiques suivantes, vienne du site web Netcraft : https://news.netcraft.com/

Netcraft est chargé d’analyser l’utilisation des différents serveur HTTP qui sont accessible depuis le web pour ensuite en faire des statiques dans différentes part de marché. Netcraft fait des analyses quatre fois part ans, se qui permet d’avoir fréquemment des analyses et pouvoir voir de manier précise l’évolution des différents serveurs HTTP.

Les résultats suivants viennent de décembre 2017.

 

Part de marché de tous les sites

 

Dans la part de marché de tous les sites, Microsoft IIS est en têtes avec 30%, mais depuis 2017 il est en diminution. Cependant apache qui est 2eme avec 25% a connu une augmentation depuis que Microsoft a commencé à diminuer et a des chances de bientôt rattraper Microsoft. Nginx qui est 3eme avec 22% a aussi commencé a augmenté en même temps qu’avec Apache.

 

Part de marché des sites actifs

 

Dans la part de marché des sites actifs, Apache est en têtes avec 44%, on peut juste voir une légère diminution a long therme depuis 2012. Nginx qui est 2eme avec 21% ne fait qu’augmenter légèrement a long therme depuis 2008. Microsoft est 4eme avec 7%, il était 2eme avant 2012, mais il a connu une grande diminution depuis 2009 où là, il se retrouve 4eme.

 

Part de marché des top million sites les plus fréquentés

 

Dans la part de marché des top million sites les plus fréquentés, Apache est en tête avec 37%, mais il continu à diminuer lentement. Cependant, Nginx qui est 2eme avec 30%, continu à augmenter. Microsoft IIS est 4eme avec 9% et il continu à descendre.

 

Part de marché des ordinateurs

 

Dans la part de marché des ordinateurs, Apache est en tête avec 42% et reste constant. Nginx qui 2eme avec 23 %, a dépassé Microsoft de 2% et il continu à augmenter. Microsoft qui est 3eme avec 21%, continu a diminué.

 

Part de marché des domaines

 

Le pic perceptible dans les domaines propulsés par Apache en mai 2013 a été causé par la plus grande société d'hébergement de l'époque, GoDaddy, qui a transféré un grand nombre de ses domaines de Microsoft IIS vers Apache Traffic Server (ATS). GoDaddy est revenu à l'utilisation d'IIS 7.5 quelques mois plus tard.

 

Aujourd'hui, Apache détient toujours la plus grande part de marché en nombre de domaines, avec 81,4 millions de parts de marché, soit une part de marché de 38%, il est donc 1er. Microsoft est 2eme avec 27%, et reste constant. Nginx a eu un gain de 1,09 million de domaines portant son total à 47,5 millions, soit une part de marché de 20%, il est donc 3eme.

 

Voici un exemple d’entreprises qui utilise c’est serveurs :

 

  Nginx Apache Microsoft IIS
Entreprises utilisant ce service      
Intégrations      

 

 

Comparaison des serveurs niveau statistique GitHub

 

GitHub est une plateforme de développement pour les programmeurs. De l'open source à l'entreprise, elle permet d’héberger et réviser du code, gérer des projets et créer des logiciels aux côtés de millions d'autres développeurs.

Les serveurs http open sources son disponible sur cette plateforme de développement, ou de programmeurs volontaires peuvent participer au développement des serveurs Apache et Nginx.

Microsoft IIS n’est pas un logiciel open source car il est sous la propriété de Microsoft qui a ses propres équipes de développement pour leurs services, donc IIS n’est pas disponible au développement open source.

Voici les statistiques GitHub pour les serveurs HTTP :

 

  Nginx Apache Microsoft IIS
Nombre de personnes dans le GitHub 4 970 1 620 Pas d’information, Microsoft est chargé directement
Nombre de branches dans le GitHub 2 110 498 Pas d’information, Microsoft est chargé directement

 

 

Conclusion

 

Comme on l’a constaté d’après les statistiques de Netcraft, Apache est en ce moment le serveur HTTP le plus utilisé dans le monde. Nginx à la deuxième place et Microsoft IIS la troisième. On a aussi constaté que Microsoft IIS a sa courbe qui tend vers le bas, Apache aussi tend vers le bas, mais de manier plus lent, et reste parfois constant dans d’autre part de marché.

Cependant, Nginx à sa courbe qui tend vers haut. Ceci s’explique par la comparaison des performances entre les serveurs ou on a constaté que Nginx a des performances largement meilleures qu’Apache et surtout Microsoft IIS.

Ce qu’il s’est en fait passé, c’est qu’avant quand Apache est apparu dans les années 1995, il est devenu le meilleur serveur HTTP en therme de performance ou beaucoup d’entreprise l’on installé, et il a vu sa courbe monter très haut dans les années suivantes. Puis Nginx est apparu qui lui par rapports à Apache à était fait sur exigence de supporter des grandes charges de connexion, occupé moins de mémoire et traiter plus rapidement les requêtes. Mais, Nginx était encore en développement et donc, il a fallu du temps pour qu’il dépasse Apache niveau performance. Les entreprises ont commencé ensuite à remplacer Apache et Microsoft IIS par Nginx en vue de c’est performances meilleures, ce qui a commencé à faire monter la courbe de Nginx.

Mais, si Nginx reste à la deuxième place et Apache a la premier pour l’instant, c’est parque le changement de serveur HTTP est assez compliqué car il faut reconfigurer des paramètres ainsi que tout le système d’hébergement et traitement des sites web. Donc, c’est pour cette raison qu’Apache en encore en premier place, mais décent lentement et Nginx en deuxième place, mais avec la courbe qui tend vers le haut. Si les statiques des serveurs HTTP continu de cette manier, Nginx dépassera Apache d’ici 5 ans en therme d’utilisation mondiale, et en therme de performance, Nginx est déjà le premier, Apache est le deuxième et Microsoft IIS troisième. Si Microsoft IIS est toujours en troisième place, c’est car il fonctionne que sur les systèmes Windows, hors la plupart de serveur HTTP fonctionne sur les systèmes linux en therme de rapidité. Et niveau performance, Microsoft IIS n’est pas meilleur que le serveur Apache et encore moins que le serveur Nginx.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *