Page d'accueil / Articles / Guides d'hébergement Web / Comparez Nginx et Apache (& Apprenez à choisir)

Comparez Nginx et Apache (& Apprenez à choisir)

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 Windows ou Linux les serveurs. 

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 serveur Web pourrait mieux répondre à vos besoins, approfondissons ces options.

Apache - Le serveur Web Hero original

Apache

Créé en 1995 par Robert McCool et à l'origine appelé le "Apache HTTP Server Project » (d'où le 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 operasystèmes de configuration, d'Unix à Windows.

En raison de cette popularité de longue date, je considère Apache en tant que serveur Web "original hero". Il est robuste, bien documenté et pris en charge par une communauté ouverte de développeurs sous les auspices du Apache Fondation du logiciel.

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 qui Apache eu du mal à gérer. 

Lire aussi

Nginx contre Apache - Différences notables

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.

ApacheL'architecture pilotée par processus de 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'autre part, 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 de 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 demande, même du même utilisateur.

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

PHP Maniabilité

É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 ne s'exécute pas PHP directement par défaut. Au lieu de cela, il transmet la demande à PHP-FPM (FastCGI Process Manager), qui gère la demande et renvoie une réponse à Nginx, qui renvoie ensuite le contenu au client.

Comme 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 que Apache saura gérer.

Apache utilise un module appelé mod_php éxécuter PHP code. 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 demande. Ce processus est également responsable du traitement de tout PHP demandes au sein de cette demande.

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. Génération d'un nouveau processus pour chaque PHP requête à l'intérieur d'une requête est d'autant plus intensive que operating doit générer un tout nouvel interprète pour chacun.

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. 

Selectionnez 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 couriez Apache ou Nginx dépendra de vos besoins et du matériel que vous utilisez. Vous pouvez utiliser l'une ou l'autre des options pour servir PHP sites Internet. 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

Photo de l'auteur

Article par Timothy Shim

Continuer la lecture