Le Nginx et Apache Ce sont des produits matures, dotés de fonctionnalités riches et de performances élevées. Ils partagent une origine open source commune et peuvent être déployés 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 serveur Web pourrait le mieux répondre à vos besoins, examinons de plus près ces options.
Marché
Apache, le serveur Web Hero original
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 et gratuit, même avec des modifications. Il est rapidement devenu populaire grâce à sa compatibilité avec de nombreux systèmes d'exploitation, d'Unix à Windows.
En raison de cette popularité de longue date, je considère Apache en tant que serveur web « héros original ». Robuste, bien documenté et soutenu par une communauté ouverte de développeurs sous l'égide de Apache Fondation du logiciel.
Nginx, le Titan d'une nouvelle ère
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 SysoevL'objectif initial de Nginx était de résoudre le problème C10K qui Apache eu du mal à gérer.
En 2019, Nginx a rejoint F5 Networks. F5 est une entreprise technologique spécialisée dans la sécurité des applications, la gestion multicloud et la prévention de la fraude en ligne.
Parts de marché et caractéristiques
Parts de marché
Différences Clés
| Fonctionnalité | Nginx | Apache |
|---|---|---|
| Introduit | 2004 | 1995 |
| Version stable actuelle | nginx 1.27.0 | Apache 2.4.63 |
| Architecture | Événementiel | Axé sur les processus |
| Open source | Oui | Oui |
| Développement et support | Apache Fondation | Réseaux F5 |
| Plates-formes supportées | Principalement Unix | Unix et Windows |
| Demandes simultanées multiples | Oui | Non |
| Traitement de contenu dynamique natif | Non | Oui |
| Modulaire | Oui | Oui |
| Configuration | Édition | par répertoire via .htaccess |
| Demande d'interprétation | Passe l'URI | Emplacement du système de fichiers des passes |
Architecture de base
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 davantage de mémoire. Cependant, elle s'adapte mieux aux charges lourdes sur les machines dotées de davantage 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 Manipulation
É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 pour exé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 sa configuration) pour traiter cette requête. Ce processus est également responsable de la gestion de toute requête 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 une requête 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 d'elles.
Benchmark de performance
Dans une rapport détaillé de référence des performances de CyberPanel, plusieurs tests clés mettent en évidence les différences entre Nginx et ApacheRegardez la vidéo suivante pour le processus de test complet.
En résumé:
- NginxGère jusqu'à 10,000 2.5 connexions simultanées avec une faible empreinte mémoire. Lors des tests de performance, il diffuse du contenu statique jusqu'à XNUMX fois plus rapidement que Apache.
- Apache:En comparaison, Apache est efficace, mais moins performant que Nginx pour le contenu statique. Grâce à son architecture pilotée par processus, ApacheLes performances de peuvent se dégrader en cas de forte concurrence en raison de la surcharge liée à la gestion de plusieurs processus.
Nginx contre Apache pour WordPress
Dans le contexte de WordPress performances, Nginx améliore considérablement les temps de chargement, en particulier pour le contenu statique, ce qui en fait un choix privilégié pour le trafic élevé WordPress sites. Son architecture pilotée par événements permet une gestion efficace des connexions simultanées, ce qui se traduit par des temps de réponse plus rapides et une charge serveur réduite.
Apache, d'autre part, offre un traitement de contenu dynamique robuste avec des modules comme mod_php, ce qui peut simplifier le déploiement pour WordPress sites qui s'appuient fortement sur du contenu dynamique. Cependant, Nginx offre généralement de meilleures performances et une meilleure efficacité des ressources pour WordPress environnements axés sur la diffusion de contenu statique.
Comment choisir entre Nginx et Apache
Comme vous pouvez le constater, il n'y a pas de vainqueur incontestable parmi ces mastodontes du serveur web. Cela dépend principalement des besoins du serveur web.
Choisissez Apache si:
- Systèmes hérités et compatibilité: Apache est souvent le choix privilégié pour les systèmes qui l'utilisent depuis longtemps, en raison de sa présence durable sur le marché. Si votre infrastructure repose fortement sur .htaccess fichiers pour la configuration par répertoire, Apache est plus adapté car il prend en charge ces fichiers de manière native, permettant une configuration décentralisée et une flexibilité dans les environnements d'hébergement partagé.
- Traitement de contenu dynamique:Si vos applications nécessitent un traitement intensif de contenu dynamique, tel que PHP, Scripts Python ou Ruby, Apache peut être avantageux grâce à sa capacité à intégrer des processeurs directement dans ses modules. Cette configuration simplifie l'exécution de scripts dynamiques directement sur le serveur.
- Facilité d'utilisation et documentation: ApacheSon adoption généralisée lui confère une documentation abondante et un soutien communautaire. Il est ainsi plus facile de trouver des guides, des tutoriels et du support. Apache-problèmes liés, ce qui en fait une option plus conviviale pour les débutants ou ceux qui préfèrent une large base de connaissances.
Utilisez Nginx si :
- Haute performance et ScalabilitéNginx est optimisé pour gérer un grand nombre de connexions simultanées, ce qui le rend idéal pour les sites web à fort trafic ou les applications nécessitant une évolutivité. Son architecture événementielle lui permet de gérer de nombreuses connexions avec une faible consommation de mémoire, ce qui le rend efficace pour la diffusion de contenu statique.
- Équilibrage de charge et proxy inverseNginx est souvent utilisé comme proxy inverse et équilibreur de charge, répartissant le trafic entrant sur plusieurs serveurs back-end. Cette fonctionnalité fait de Nginx un excellent choix pour les configurations et environnements haute disponibilité nécessitant une répartition efficace de la charge.
- Diffusion de contenu statique:Si votre application diffuse une quantité importante de contenu statique, tel que des images, du CSS ou JavaFichiers de script : Nginx excelle par sa rapidité et son efficacité à servir directement les fichiers statiques. Son architecture permet une livraison rapide des ressources statiques avec une charge minimale.
- Simplicité de configuration:Bien que Nginx ne prenne pas en charge .htaccess La syntaxe de configuration des fichiers est simple et intuitive. Cette simplicité est avantageuse pour ceux qui souhaitent maintenir des configurations de serveur claires et simples.
Utilisation combinée
Pour de nombreuses configurations, l'utilisation des deux Apache et Nginx ensemble peuvent exploiter les atouts de chacun.
Une configuration courante consiste à placer Nginx comme proxy inverse devant ApacheCela permet à Nginx de gérer efficacement le contenu statique et les connexions simultanées, tout en Apache Gère le traitement dynamique du contenu. Cette approche hybride permet d'optimiser les performances et l'utilisation des ressources dans des environnements web complexes.
Réflexions finales
Que vous couriez Apache ou Nginx dépendra de vos besoins et du matériel utilisé. Vous pouvez utiliser l'une ou l'autre option pour le service. PHP sites Internet. Mais il y a beaucoup plus à considérer que cela.
Si votre site web est simple, vous ne remarquerez peut-être aucune différence. Mais si votre site génère plus de trafic et se développe, vous devrez comprendre les performances et l'évolutivité de chaque serveur sous charge.