Comparatif Apache Vs Nginx

Comparatif Apache vs Nginx: Lequel est meilleur ?

Mis à jours 5 mai 2020

Dans cet article, nous allons vous expliquer plus en détails les différences entre les serveurs Web NGINX et Apache.

Lequel de ces deux est le plus performant ?

Quels sont leurs points forts et leurs points faibles ?

Lequel devriez-vous choisir ?

Allons-y !

Quel serveur Web choisir : Apache ou NGINX ?

La principale différence entre Apache et NGINX se caractérise par leur design d’architecture. Apache utilise une approche axée sur les processus et crée un nouveau thread pour chaque requête. Tandis que NGINX utilise une approche plutôt axée sur les événements pour traiter plusieurs requêtes pour un seul thread.

Nous allons approfondir les sujets suivants :

Qu’est-ce que APACHE http Server ?

Apache HTTP Server

Le serveur http APACHE est un serveur web multi-plateforme aussi connu sous « httpd » et Apache.

Les points intéressants à savoir sur Apache sont les suivants :

Qu’est-ce que le NGINX Web Server ?

Nginx Logo

NGINX ? Prononcé comme « Engine X » est un serveur web créé par Igor Sysoev en 2004. Aujourd’hui, il est plus qu’un serveur web ordinaire.

Ce que vous devez savoir sur NGINX :

  • Au début, NGINX était utilisé comme un complément d’Apache
  • Il a été usuellement sollicité pour traiter des fichiers statiques, mais actuellement, il a évolué et est devenu un serveur web qui traite les spectres complets des tâches du serveur.
  • Désormais, NGINX est devenu comme un proxy inversé, un équilibreur de charges, un proxy de messagerie et un outil de mise en cache http.

Apache et Nginx sont les serveurs Web les plus utilisés sous Linux. Ensemble, ils desservent plus de 50% du trafic sur le Web.

Même si Apache et NGINX semblent avoir plusieurs qualités communes, ils sont différents sur bien des égards. Et cela se voit dans leur façon de fonctionner.

Pour connaître les différences et arriver à une conclusion, plongeons dans les détails et effectuons la comparaison. Nous mentionnerons également le plus performant à chaque point-clé.

Différence entre Apache et Nginx sur leurs base architecturale 

La plus grande différence entre Apache et NGINX repose sur le design architectural. Ils se discernent par leurs moyens de traiter des connexions, des données sur le trafic et de répondre aux différentes conditions des serveurs.

L’un propose une approche basée sur les processus tandis que l‘autre opte plus sur une approche basée sur les événements.

Architecture Apache

Approche axée sur les processus
Cela consiste à créer un nouveau fil ou thread pour chaque requête.

Apache adopte une approche multithread qui produit une multitude de modules. Ces pré-modules sont au nombre de trois selon l’algorithme de traitement des requêtes. Chacun est utilisé différemment selon les besoins du serveur.

Les MPM ou Multi-Processing Modules offrent une architecture plus flexible pour choisir différents types de connexions et d’algorithmes.

Les différentes versions d’Apache 2 emploient aussi différents modules de procédés.

Les trois MPM d’Apache :

  1. Process Pre-fork MPM
  2. Worker MPM
  3. Event MPM

L’ancienne version Apache (2.2) utilise mpm_worker, mpm_prefork et mod_php. Tandis qu’Apache 2.4, lui, emploie le mpm_event et php-fpm.

Par défaut, Apache 2.2 est configuré sous Pre-fork mode (mpm_prefork). Cela répond à un grand nombre de processus, chacun pouvant servir une seule requête à la fois.

En d’autres mots, Apache crée un nouveau thread à chaque fois pour traiter une requête.

Un fil ou THREAD est la plus petite séquence d’une programmation qui a été programmée par un planificateur. Dans la plupart des cas, un fil est un composant d’un processus.

Toutefois, l’architecture de base d’Apache amène à une consommation conséquente de ressources pouvant causer des aléas au serveur (exemple : des ralentissements ou des bugs)

Architecture de serveur Web Apache et Nginx

Architecture NGINX

Approche axée sur les événements
Cela consiste à traiter plusieurs requêtes dans un seul thread.

NGINX suit une approche basée sur les événements et traite les requêtes d’une manière asynchrone. Il a été programmé pour utiliser un mode de connexion axé sur les événements traité par un algorithme.

Inrastructure de NGINX

Ainsi, il peut exécuter des milliers de requêtes en un seul thread. Une telle procédure modulaire permet à NGINX de réaliser très rapidement les opérations et de déployer le minimum de ressources.

En plus, vous pouvez utiliser NGINX sur les systèmes à faible consommation qui travaillent sous des charges de données lourdes.

Le gagnant

Le Gagnant mais aussi, le plus performant est donc :

NGINX, avec une structure légère et plus rapide que celle d’Apache.

Qui est le plus performant, Apache ou Nginx ?

Les deux types de serveurs procèdent sur des contenus statiques et dynamiques, et cela, très différemment. On dit que NGINX est mieux lorsqu’il s’agit de traiter un contenu statique. Voyons si cela est vrai !

Contenu statique

Apache:

Utilise la méthode basée sur les fichiers pour traiter un contenu statique.

Le contenu statique ou les fichiers sont généralement des fichiers stockés sur le disque du serveur. Par exemple des fichiers CSS, des fichiers JavaScripts ou des images. Apache gère le contenu statique en utilisant sa méthode conventionnelle basée sur des fichiers.

NGINX

Surpasse Apache dans la gestion du contenu statique

Comme l’architecture de NGINX est plus encline à traiter des charges importantes, elle est plus rapide lorsqu’il s’agit de servir des contenus statiques.

Il est 2,5 fois plus rapide que celui d’Apache selon un test qui a montré qu’il peut traiter plus de 1000 connexions simultanément.

Nginx sert les ressources statiques sans l’intervention de PHP. À l’inverse, Apache traite toutes ces demandes avec une surcharge plus coûteuse sur les ressources du serveur. Cela rend Nginx plus efficace et moins exigeant pour les ressources système.

Cette image montre le nombre de demandes de contenu statique traitées par seconde. Nginx surpasse clairement Apache ici! NGINX est d’autant plus efficace et moins exigeant sur le CPU et le RAM du serveur.

Différence entre le nombre requêtes de contenu statiques Apache vs Nginx

Contenus dynamiques

Apache

Traite le contenu dynamique au sein du serveur.

Apache peut accéder aux contenus dynamiques dans le serveur lui-même sans avoir recours à des composants externes. Il peut donc gérer vos crédos lui-même.

Lorsqu’il s’agit de comparer entre  la performance d’Apache et de Nginx, ce dernier est presque égal lorsque le traitement de contenu dynamique est pris en compte.

Voici la comparaison du nombre de requêtes de contenu dynamique par seconde. Aucune différence !

Requêtes contenu dynamique Apache vs Nginx

NGINX, non moins le meilleur, présente à peu près les mêmes caractéristiques.

NGINX

Ne traite pas les contenus dynamiques.

À propos de contenu dynamique, Nginx ne peut pas le traiter sur le serveur Web comme le fait Apache. Toutes les requêtes avec un contenu de page Web dynamique sont transmises à un processus externe (par exemple, PHP-FPM) pour exécution.

Le serveur attend ensuite le contenu.

Nginx attend le retour du contenu finalisé pour ensuite l’envoyer au client.

Voici une image qui explique le processus :

Processus de traitement de contenu dynamique par Nginx

NGINX ne peut servir le contenu dynamique que lorsqu’il est utilisé avec les gestionnaires SCGI et le module FastCGI.

Remarque : Ce procédé peut sembler compliqué, mais cela permet, des fois, à NGINX de devenir plus rapide.

Gagnant :

Statique : sur les contenus statiques, Apache l’emporte.

Dynamique : les deux sont à égalité lorsqu’il s’agit de contenus dynamiques.

Le support du système d’exploitation OS

Le Support OS ou le Système d’Exploitation est un point important à considérer, notamment lorsqu’il s’agit de comparer Apache et NGINX. Mais tous deux sont sur le même pied d’égalité ici.

Apache

Supporte les systèmes Unix tels LINUX et BSD.
Supporte également MS Windows.

Apache s’exécute sur tous les types de systèmes de type Unix (Linux Centos, Debian, Ubuntu, Fedora etc.. ou BSD, par exemple) et prend totalement en charge l’hébergement Microsoft Windows et le .NET FrameWork.

NGINX

Supporte tous les systèmes UNIX
Supporte Windows, mais partiellement.

Fonctionne également sous différents systèmes UNIX modernes, mais supporte mal Windows par rapport aux autres systèmes.

Gagnant : APACHE sort le gagnant ici. !!!

Configuration et distribution centralisée

La comparaison entre Apache et NGINX est vraiment un sujet passionnant. Leur configuration les rendent chacun unique et intéressant.

Voyons quelle configuration est la plus rapide et la plus performante.

Apache

Permet des configurations additionnelles sur la base de répertoire via  .htaccess

Toutefois, cette structure ne permet pas à tous les utilisateurs de contrôler certains aspects de leur site web sans permission d’éditer leur configuration principale. Ceci est très important !

NGINX

Ne permet aucune configuration additionnelle, mais cela augmente la performance en votre faveur.

En ne permettant aucune configuration additionnelle, il peut servir les fichiers plus vite qu’Apache. Il n’a pas besoin d’accéder à .htaccess et d’interpréter les requêtes de l’utilisateur.

Gagnant : Apache en termes de configuration, NGINX en termes de rapidité.

Interprétation des requêtes

Dans le débat de la différence entre Apache et NGINX, la méthode d’interprétation des demandes est un sujet intéressant.

Les deux serveurs procèdent et interprètent les requêtes de manières très différentes. Cela rend chacun d’eux unique en son genre. Cependant, l’un aussi meilleur que l’autre selon les besoins de son utilisateur.

Voyons cela plus en détail !

Apache

Passe l’emplacement du système de fichiers ou FSL.

Apache, offre la possibilité d’interpréter la requête. Comme il est considéré comme une ressource physique sur l’emplacement du système de fichiers et qui peut nécessiter plus d’évaluation abstraite, il traite les requêtes comme des FSL (File System Location).

Bien sûr, Apache utilise les emplacements URI, mais ces derniers sont généralement faits pour des ressources plus abstraites. Et lorsqu’on crée ou configure un hébergeur ou un serveur virtuel, Apache utilise des blocs de répertoire sous le document root.

Apache Vhost configuration

Cette préférence FSL est aussi viable lorsqu’on utilise .htaccess pour redéfinir des configurations de répertoires spécifiques.

NGINX

Passe par URI pour interpréter les requêtes.

NGINX a été conçu pour être un serveur web et un serveur proxy inversé. Dû à ce type d’architecture, il s’associe préalablement avec vos yeux, traduisant le système si cela est nécessaire.

Il ne présente pas de mécanisme pour la spécification de la configuration pour le système de gestion des fichiers, mais privilégie plutôt l’URI pour cette tâche. Cela permet à NGINX de fonctionner facilement et cette configuration permet de faciliter les réponses à différents types de requêtes.

Il ne vérifie pas le système de fichiers jusqu’à ce qu’il soit prêt à servir la requête. Cela explique pourquoi il n’applique aucune forme de traitement .htaccess.

Nginx Vhost

Cette structure permet à NGINX d’interpréter les requêtes et les emplacements URI. Cela permet à NGINX de fonctionner facilement, non seulement comme un serveur web, mais aussi comme un serveur proxy, un équilibreur de charges (Load Balancer) et un système de mise en cache http.

Et encore, dans cette course effrénée, NGINX gagne en matière de taux de transfert des données (c’est la vitesse à laquelle les données parviennent en partant du serveur vers le client). Et dans tous les cas,

NGINX gagne à 500 / 100 partout.

Vitesse de traitement des requêtes entre Apache et Nginx

Gagnant : NGINX semble gagner avec sa célérité d’interprétation et de réponse.

Les modules complémentaires

Les deux serveurs sont extensibles par des modules complémentaires. Mais la façon dont ils fonctionnent est un tantinet différente. Comparons maintenant leurs modules – Apache VS NGINX, PARTEZ !

Apache

Soixante (60) modules sont téléchargeables et peuvent être activés ou désactivés à tout moment.

Apache présente un riche éventail de modules activables et désactivables à souhait. Vous pouvez avoir accès à 60 modules officiels Apache. Il y a également plusieurs modules non officiels téléchargeables sur internet.

Le système de modules d’Apache vous permet de vous procurer ou de vous défaire de ces modules selon vos besoins et vos aspirations. C’est-à-dire que vous pouvez les utiliser ou pas, cela ne changera pas grand-chose. Apache est doté de beaucoup de fonctionnalités, mais certaines d’entre elles ne sont pas utilisées fréquemment.

NGINX

Modules disponibles par des tiers (non chargeables dynamiquement)

NGINX quant à lui, est limité à des plugins tiers et qui ne sont pas toujours chargeables. Ces modules sont toutefois très utiles. Ils vous permettent de dicter au serveur ce que vous voulez faire en incluant les fonctionnalités que vous souhaitez utiliser.

Tout cela est considéré comme étant plus sécurisé que le serveur Apache, sans pour autant sacrifier la légèreté et la haute performance qui lui ont valu sa qualité d’après tout ce que nous avons pu voir jusqu’ici.

Note : Apache est comme Microsoft Word et NGINX comme Notepad. Vous vous demandez certainement pourquoi ? C’est parce qu’Apache a plusieurs options, mais vous n’avez essentiellement besoin que de peu d’entre eux. À l’encontre, NGINX en a le strict minimum, mais cela lui permet toujours d’être 50 fois plus léger et plus rapide comparé à son cousin Apache.

Gagnant : NGINX – Sa légèreté et sa simplicité couplées à sa performance et sa rapidité font de lui un meilleur serveur qu’APACHE.

Flexibilité

La flexibilité est l’une des caractéristiques les plus importantes lorsqu’on parle de serveur web. Ce comparatif Apache Vs NGINX présente chacun leurs spécificités.

Apache

Supporte la personnalisation du serveur par le biais de modules dynamiques.

La personnalisation peut être faite à partir des modules complémentaires. Apache a toujours eu des modules dynamiques depuis longtemps, ce qui lui permet d’offrir l’option personnalisation.

NGINX

Pas assez flexible pour supporter des modules dynamiques et des chargements.

Au début de l’année 2016, NGINX pouvait supporter le chargement de modules dynamiques, mais avant cela, l’admin devait compiler tous les modules dans le NGINX binaire.

La majorité des modules ne supporte pas encore le chargement dynamique, mais dans un futur proche, qui sait, cela pourrait être faisable.

Gagnant : Apache mène à ce stade.

Sécurité

Le comparatif d’Apache VS NGINX est encore un sujet de débat poignant même si les deux serveurs offrent une sécurité optimale grâce à leurs base de code C.

Chers utilisateurs, utilisez-les l’esprit tranquille !

Apache

Grande sécurité

Apache assure que tous les sites web du serveur sont protégés des menaces de piratages et autres menaces.

Ainsi, il offre des astuces de configuration pour la gestion des attaques par Déni de service, tout comme le module mod_evasive pour répondre aux attaques http, DoS, DDoS ou autres types.

En parlant de sécurité et d’Apache, vous devez lire notre article détaillé sur la sécurité de cPanel ou la sécurisation de cPanel/WHM. Un cPanel sécurisé signifie un site Web sécurisé.

NGINX

Une meilleure sécurité avec une base-code plus fine.

Le code base de NGINX est toutefois significativement plus petit, donc celui-ci est plus avantageux en termes de sécurité. NGINX a aussi une liste de balises sécuritaires.

Nous vous invitons à lire la publication sur Mitigating des attaques DDoS sur le blog de NGINX.

Gagnant : NGINX est plus sécurisé.

Le support

Le support est une chose que tout client requiert ardemment. En comparant le support d’Apache et NGINX, il semble n’y avoir pas grand-chose de différent.

Apache

Le support communautaire peut être fait à partir d’une liste de diffusion, IRC et Stack Overflow.

Le support commercial d’Apache est disponible auprès d’un certain nombre de sociétés tierces comme OpenLogic. Cependant, aucune liste officielle n’est disponible auprès de la Fondation Apache. Le serveur est voué à être un support pour tous ses utilisateurs.

NGINX

Support communautaire par message de diffusion, IRC, Stack Overflow et un forum.

La compagnie conceptrice de NGINX offre un produit commercial appelé NGINX Plus. Celui-ci prend en charge un ensemble de fonctionnalités supplémentaires concernant l’équilibre des charges, la diffusion multimédia (streaming) et la surveillance.

Gagnant : Assez difficile à dire ! Le support est assez identique pour les deux serveurs.

Conclusion de la comparaison entre Apache et NGINX

Apache Nginx
Construit pour devenir un serveur Web Il joue le rôle de serveur Web ainsi qu’un Reverse-Proxy
Ne peut pas traiter d’importantes requêtes simultanées avec haut trafic Peut traiter de multiples requêtes clients simultanés en utilisant qu’un fragment des ressources disponibles
Utilise une approche multi-thread pour traiter les requêtes Utilise une approche événementielle pour servir les requêtes des clients
Les modules sont chargés dynamiquement le rendant plus flexible Les modules ne peuvent être chargés de manière dynamique. Ils doivent être compilés dans le Core du logiciel
Gère le contenu dynamique au sein du serveur lui même Ne peut pas traiter le contenu dynamique

Apache et NGINX sont uniques. L’un ne peut remplacer l’autre sans oublier qu’ils ont chacun leurs points forts et leurs points faibles. Après avoir survolé les avantages, les limites et les différences, vous avez peut-être déjà une idée du meilleur serveur.

Dans la course aux points, Apache a obtenu deux (2) points sur neuf (9) tandis que NGINX mène avec cinq (5) points sur neuf (9) sans compter les deux (2) points indiscernables entre les deux serveurs.

Nous pouvons donc affirmer que NGINX est en tête.

Toujours un doute sur quel serveur choisir ? Voyons comment et quand choisir l’un ou l’autre.

Quand choisir Apache à la place de NGINX ?

.htaccess d’Apache

NGINX ne supporte pas le .htaccess. Toutefois, avec Apache, vous pouvez contrôler l’aspect de votre site librement.

  • Les utilisateurs qui n’ont pas d’autorisation privilégiée, ne sont évidemment pas autorisés à éditer la configuration principale.
  • À l’aide des fichiers .htaccess, vous pouvez remplacer les paramètres du système pour chaque répertoire.
  • Pour une performance optimale, intégrez ces fichiers dans la configuration principale.
  • Dans un environnement d’hébergement web partagé, Apache est mieux grâce à sa configuration .htaccess.

NB : Pour l’hébergement de serveur dédié ou VPS, NGINX reste la meilleure option.

Dans le cas de limitations dans les fonctionnalités, utilisez Apache.

NGINX à certains modules de base assez importants, toutefois certaines options sont très limitées. Au cas où certaines limitations ou des modules supplémentaires sont requis, utilisez Apache à la place.

Quand choisir NGINX au lieu d’apache ?

Traitement rapide des contenus statiques

NGINX opère mieux lorsqu’il s’agit de prendre en main des contenus et fichiers statiques à partir d’un répertoire spécifique.

En plus, les processus de serveur en amont ne sont pas bloqués en raison des lourdes requêtes de contenus statiques, car NGINX peut les traiter simultanément. Cela améliore largement la performance globale des serveurs.

NGINX essaie incessamment de donner une meilleure expérience à ses utilisateurs. L’année 2018 a été marquée par une certaine évolution technologique que vous pourrez constater dans le blog de NGINX.

Fait pour les sites à fort trafic

Si nous parlons de la vitesse et du nombre de clients qui peuvent être servis, NGINX fera toujours de l’ombre à Apache.

Cela fait de NGINX un serveur très léger et innovant. Voilà pourquoi, beaucoup de développeurs choisissent d’utiliser NGINX.

Il est à noter que les magasins en ligne d’aujourd’hui recrutent en particulier un développeur Magento qui sait comment gérer un site à fort trafic et qui est capable de travailler sur NGINX.

Donc, lorsqu’il s’agit de servir un site web à fort trafic, aucun autre serveur ne bat NGINX.

Quand utiliser les deux ensembles !

Oui, Apache et NGINX peuvent aussi s’allier.

Il est possible d’utiliser la force des deux serveurs en les utilisant ensemble.

Vous pouvez combiner NGINX avec Apache comme un serveur proxy. En plus, NGINX offre la possibilité d’établir plusieurs connexions simultanément et d’offrir une vitesse de traitement rapide.

Pour des connexions statiques, NGINX servira les fichiers aux clients dans les plus brefs délais. Pour les contenus dynamiques, par exemple, les fichiers PHP, le serveur proxy inversé NGINX peut envoyer les requêtes à Apache qui peut traiter et rendre des résultats satisfaisants.

NGINX pourra ensuite livrer le rendu final aux clients. Aussi, cela vous permet d’avoir un site web fonctionnel pour servir vos clients (un volume conséquent d’utilisateurs) très vite.

Et nous voici à la fin du concours !

Mot de la fin !

La décision sur le choix entre Apache et NGINX est une étape prépondérante pour votre site web. Les deux serveurs sont capables de gérer diverses charges de travail et de collaborer avec d’autres logiciels pour fournir un rendu web complet.

Nous espérons que ce guide de comparaison entre Apache et NGINX vous a aidé pour choisir le meilleur serveur web adapté à vos besoins. Envie de plus d’astuces ? N’hésitez pas à nous contacter !

Jacques Tremblay
Suivez moi
Les derniers articles par Jacques Tremblay (tout voir)

Check Also

Comment LiteSpeed web server se compare-t-il à Apache et nginx ?

Mis à jours 23 juin 2020 Vous songez à passer au serveur Web LiteSpeed web …

Share via
Copy link
Powered by Social Snap