Internet, tel que nous le connaissons aujourd’hui, a commencé sa conquête au début des années 90. Le 20 septembre 1990, le premier site web du monde a été mis en ligne au CERN, le centre de recherche nucléaire de Genève, marquant ainsi la naissance du World Wide Web. En principe, les pages web ne sont rien d’autre que des documents HTML. Pour pouvoir mettre à la disposition des visiteurs plusieurs pages web différentes, l’hôte a besoin d’un logiciel serveur. Celui-ci traite les demandes et les analyse pour ensuite renvoyer les documents demandés dans le navigateur. Deux des programmes les plus populaires de ce type sont NGINX et Apache. Dans ce comparatif, nous vous présentons en détail les deux serveurs web et leurs caractéristiques, et nous vous montrons lequel est le mieux adapté à quel usage.
La tâche d’un serveur web est d’établir une connexion entre un serveur physique ou un serveur en nuage et les pages web stockées (ou les navigateurs) des utilisateurs d’Internet. Le serveur d’application, quant à lui, est chargé de mettre à disposition des applications au sein d’un réseau.
Non, contrairement au serveur web Apache, NGINX ne supporte que la livraison de contenus statiques. En revanche, le contenu dynamique est transmis à un autre logiciel.
Oui, cela fonctionne même très bien. Dans la pratique, on trouve principalement la combinaison de NGINX comme reverse proxy et d’un ou plusieurs serveurs Apache dans le backend.
Table des matières
1. Apache : Flexibiliste populaire
Le serveur web open source Apache est présent sur le marché depuis 1995 déjà et, selon w3techs.com, il s’agit du serveur web le plus répandu. En raison de sa longue histoire, de sa vaste documentation et de ses possibilités d’utilisation flexibles, le serveur web est très apprécié des administrateurs. Mais cette énorme part de marché s’explique aussi en premier lieu par le fait que de nombreux systèmes (par ex. CMS) fonctionnent nativement avec Apache. De plus, celui-ci est déjà préinstallé sur toutes les distributions Linux importantes comme Red Hat, CentOS ou Ubuntu.
Bon à savoir : depuis 1999, la Apache Software Foundation prend en charge le développement du serveur web.
La configuration du serveur web Apache s’effectue à l’aide d’un fichier .htaccess. Celui-ci permet une grande flexibilité dans le traitement des demandes entrantes. Il est ainsi possible de définir des limites de mémoire et des restrictions de téléchargement de fichiers, de mettre en place des règles de redirection ou une protection des répertoires (htpasswd) ou de procéder à divers réglages de sécurité pour le traitement des cookies.
Mais l’un des plus grands avantages d’Apache est certainement la possibilité d’attribuer à chaque niveau ou répertoire de l’arborescence son propre fichier .htaccess avec une configuration individuelle. Cela permet par exemple aux fournisseurs d’hébergement partagé d’offrir à leurs clients une possibilité de configuration de leur site web sur une seule et même machine, sans que cela n’affecte les autres utilisateurs. Si un utilisateur effectue un réglage pour son environnement dédié, la configuration globale du serveur n’en est pas affectée.
1.1 Les modules étendent les fonctionnalités du serveur web
Grâce au système de modules dynamiques (qui existe également sous cette forme dans NGINX), il est possible d’étendre encore les fonctionnalités d’Apache. Il est possible d’installer les modules même après avoir installé et mis en service le serveur web Apache, et de les activer ou de les désactiver si nécessaire. Une liste officielle de tous les modules qui font partie de la distribution standard d’Apache est disponible ici.
Astuce : Dans les distributions Linux basées sur Debian, les modules peuvent être activés ou désactivés sans modifier les fichiers de configuration à l’aide des commandes a2enmod et a2dismod .
1.2 NGINX vs Apache : le calvaire de la performance
.L’un des grands points faibles d’Apache est sa performance. En effet, alors que le serveur web fonctionne encore de manière fiable et stable pour les petits sites web, il s’essouffle régulièrement lorsque le nombre de requêtes simultanées augmente. Cela est principalement dû au fait que pour chaque connexion ouverte au serveur web, un processus séparé est lancé, qui utilise de la mémoire vive. Ainsi, des centaines ou des milliers de requêtes parallèles génèrent logiquement autant de processus. Ceux-ci augmentent considérablement les temps de chargement des pages et peuvent même, dans le pire des cas, conduire à un arrêt complet du serveur web.
Au fil du temps, le serveur web Apache a été constamment amélioré et sa performance optimisée. Il ne peut toutefois pas rivaliser avec un NGINX „out-of-the-box“.
2. NGINX : un poids plume performant
NGINX n’a été publié qu’en 2004 et a été développé dès le début en mettant l’accent sur la performance, le serveur central et les fonctions proxy. Le serveur web offre des avantages décisifs par rapport à Apache, surtout sur des systèmes limités, car il mise au contraire sur une architecture asynchrone basée sur des événements. Cela signifie qu’un processus séparé n’est pas lancé pour chaque connexion, mais que plusieurs milliers de connexions peuvent être traitées par processus. De cette manière, NGINX est en mesure de traiter un grand nombre de demandes simultanées sans perdre en vitesse et en stabilité. La consommation de ressources reste relativement constante, même en cas de pics de charge, ce qui permet de livrer des pages très performantes avec un grand nombre d’accès, même avec un matériel limité (par exemple sur un Raspberry Pi).
2.1 Le contenu dynamique n’est pas pris en charge
NGINX peut également être étendu par des modules. Ceux-ci doivent toutefois être compilés dans le système, car un chargement dynamique n’est pas possible comme avec Apache. De plus, contrairement à Apache, NGINX ne supporte que la livraison de contenus statiques, comme par exemple les images, les feuilles de style CSS ou JavaScript, et n’offre pas non plus la possibilité d’intégrer les interprètes correspondants par le biais de modules. Pour les contenus dynamiques (p. ex. les scripts PHP, Python ou Perl), les demandes sont transmises à un autre logiciel (donc, dans le cas de PHP, à l’interpréteur correspondant).
En outre, les adaptations de configuration au niveau du répertoire (par .htaccess) ne sont pas prises en charge, ce qui rend la configuration d’un serveur web NGINX généralement un peu plus complexe que celle d’Apache. Cela ne joue toutefois un rôle que si vous souhaitez vous pencher en détail sur l’administration du serveur. Les fournisseurs d’hébergement qui ont NGINX dans leur portefeuille proposent généralement les modules adéquats pour les tâches courantes.
3. NGINX et Apache en tant qu’association
Pour profiter des avantages des deux mondes, il est également possible d’utiliser NGINX et Apache en combinaison. Alors que NGINX convient par exemple particulièrement bien comme reverse proxy, Apache est principalement utilisé comme serveur dorsal en raison de son traitement des contenus dynamiques.
Dans la pratique, on place le serveur NGINX devant un ou (en tant qu’équilibreur de charge) plusieurs serveurs Apache. Les connexions entrantes sont donc d’abord envoyées au NGINX, qui s’occupe de la livraison des contenus statiques. Pour le contenu dynamique, en revanche, la demande est transmise au serveur Apache, qui peut également recourir à son fichier .htaccess dans ce contexte.
4. conclusion : Apache ou NGINX ?
Il est impossible de répondre de manière générale à la question de savoir quel est le meilleur serveur web. En effet, alors que NGINX bat Apache à plate couture en termes de performances, ce dernier a une longueur d’avance en ce qui concerne la gestion des contenus dynamiques. La décision dépend donc toujours, en fin de compte, des exigences individuelles de votre projet web. Dans la pratique, de nombreux utilisateurs misent également sur une association afin de profiter des points forts des deux serveurs web.
C’est bon à savoir : La communauté Internet „Stack Overflow“ est un bon point de contact pour les développeurs et les administrateurs. En effet, vous y trouverez non seulement des réponses à la plupart des questions sur le thème des serveurs web, mais aussi de nombreuses instructions, des tutoriels et des conseils d’assistance concernant l’installation et l’utilisation d’Apache, de NGINX et de leurs alternatives. Il s’agit par exemple du serveur web libre Lighttpd ou du serveur open source HTTP / 2 Caddy.
Les avantages et les inconvénients des deux serveurs web sont également résumés dans la vidéo suivante :