Nginx vs Apache : comparaison directe et comment choisir

Mise à jour : 2022-04-19 / Article par : Timothy Shim

Les deux Nginx et Apache sont des produits matures avec des ensembles de fonctionnalités riches et de hautes performances. Ils partagent des origines open source communes et vous pouvez les déployer sur des serveurs Windows ou Linux. 

Cependant, certaines différences essentielles peuvent vous inciter à choisir l'un plutôt que l'autre.

Par exemple, Apache est une solution complète qui prend en charge de nombreuses technologies et modules différents prêts à l'emploi. En revanche, Nginx s'appuie sur des modules tiers pour étendre ses fonctionnalités.

Pour voir quel le serveur web pourraient mieux répondre à vos besoins, approfondissons ces options.

Apache - Le serveur Web Hero original

Apache

Créé en 1995 par Robert McCool et initialement appelé "Apache HTTP Server Project" (d'où son nom), Apache a été conçu pour créer un serveur robuste de qualité commerciale qui est libre d'utilisation, même avec des modifications. Il est devenu populaire très rapidement car il pouvait fonctionner sur de nombreux systèmes d'exploitation différents, d'Unix à Windows.

En raison de cette popularité de longue date, je considère Apache comme le serveur Web "original hero". Il est robuste, bien documenté et pris en charge par une communauté ouverte de développeurs sous les auspices de l'Apache Software Foundation.

Nginx – Titan d'une nouvelle ère

Nginx

Nginx (prononcé « Engine X ») est un serveur proxy HTTP et inverse, un serveur proxy de messagerie et un serveur proxy TCP/UDP générique utilisé pour héberger des sites Web et des applications de toutes tailles. Il a été publié pour la première fois par un développeur russe Igor Sysoev. L'objectif initial de Nginx était de résoudre le problème C10K qu'Apache avait du mal à gérer. 

Lire aussi

Différences notables entre Nginx et Apache

Architecture

Nginx et Apache partagent certaines similitudes dans leur architecture de base. Par exemple, ils utilisent tous les deux des processus maître-travailleur pour améliorer les performances. Ils ont même des fichiers de configuration similaires. Pourtant, les différences de style architectural entraînent une variation significative des performances à grande échelle.

Nginx possède une architecture événementielle respectueuse des ressources qui utilise de petites quantités constantes de mémoire sous charge. Cette caractéristique le rend idéal pour l'hébergement de sites Web à fort trafic ou ceux qui ont des pics de trafic intermittents.

L'architecture basée sur les processus d'Apache gère chaque connexion via un thread dédié, ce qui nécessite plus de mémoire. Cependant, il évolue mieux sous de lourdes charges sur des machines avec plus de cœurs de processeur et de RAM.

Utilisation de la mémoire

Nginx est connu pour ses hautes performances et sa faible consommation de ressources. D'un autre côté, Apache peut consommer beaucoup de mémoire, en particulier lors de l'exécution de plusieurs blocs de serveur. Alors que les deux utilisent de la mémoire pour gérer les requêtes HTTP, Nginx est plus léger. 

La conception d'Apache signifiait qu'il engendrait un thread par connexion, et chaque thread utiliserait une certaine quantité de RAM. À mesure que le trafic augmentait, cela pouvait entraîner des problèmes, car davantage de RAM serait nécessaire, en particulier sur les serveurs disposant de moins de mémoire. Apache crée également de nouveaux processus pour chaque requête, même du même utilisateur.

Comparativement, Nginx utilise un processus pour gérer plusieurs connexions à la fois. 

Gestion PHP

Étant donné que ces deux serveurs Web fonctionnent principalement avec PHP, la façon dont ils gèrent le code signifie un potentiel de performances important. Nginx n'exécute pas PHP directement par défaut. Au lieu de cela, il transmet la requête à PHP-FPM (FastCGI Process Manager), qui gère la demande et renvoie une réponse à Nginx, qui renvoie ensuite le contenu au client.

Étant donné que Nginx n'attend pas de réponse de PHP-FPM pour servir une autre requête (de la même manière qu'il n'attend pas de réponse des clients lors de la diffusion de contenu statique), Nginx peut gérer plus de requêtes simultanément qu'Apache ne pourra en gérer.

Apache utilise un module appelé mod_php pour exécuter du code PHP. Dans ce modèle, chaque fois qu'une requête HTTP arrive, Apache génère un nouveau processus ou thread (selon la façon dont il est configuré) pour gérer cette requête. Ce processus est également responsable du traitement de toutes les requêtes PHP dans cette requête.

Ce modèle fonctionne, mais il a quelques inconvénients. D'une part, la création d'un nouveau processus pour chaque requête peut être intensive sur le système, surtout s'il y a de nombreuses requêtes simultanées. La génération d'un nouveau processus pour chaque requête PHP dans une requête est encore plus intensive puisque le système d'exploitation doit générer un tout nouvel interpréteur pour chacune.

Comment choisir entre Nginx et Apache

Comme vous pouvez le voir, il n'y a pas de gagnant clair entre ces mastodontes de serveurs Web. Cela dépend principalement de ce que vous avez besoin que le serveur Web gère. 

Choisissez Apache si : 

  • Vous gérez un site Web à moyenne/grande échelle susceptible de croître considérablement au fil du temps et nécessitant des modules personnalisés.
  • Vous avez de nombreux hôtes virtuels ou modules activés sur votre serveur et vous en avez tous besoin au démarrage.
  • Vous gérez un petit site Web et vous ne voulez pas passer du temps à apprendre à configurer correctement Nginx.

Utilisez Nginx si :

  • Vous gérez un site Web à grande échelle et souhaitez configurer facilement la mise en cache et l'équilibrage de charge en même temps sans vous soucier des limitations matérielles.

Réflexions finales sur Nginx vs Apache

Que vous exécutiez Apache ou Nginx dépendra de vos besoins et du matériel que vous utilisez. Vous pouvez utiliser l'une ou l'autre option pour servir des sites Web PHP. Mais il y a beaucoup plus à considérer que cela. 

Si vous avez un site Web simple, vous ne remarquerez peut-être aucune différence entre eux. Mais si votre site reçoit plus de trafic et se développe, vous devrez savoir comment chaque serveur fonctionne et évolue sous charge.

Lire aussi

A propos de Timothy Shim

Timothy Shim est un écrivain, un éditeur et un geek de la technologie. Il a débuté sa carrière dans le domaine des technologies de l’information et a rapidement trouvé son chemin dans la presse écrite. Il a depuis travaillé avec des titres de médias internationaux, régionaux et nationaux, notamment ComputerWorld, PC.com, Business Today et The Asian Banker. Son expertise se situe dans le domaine de la technologie, tant du point de vue du consommateur que de l'entreprise.