Maison >développement back-end >tutoriel php >Comment choisir entre Apache et Nginx
Il existe de nombreux produits de serveur WEB sur le marché, et les plus courants sont Apache et Nginx. Mais comment choisir entre Apache et Nginx rend également de nombreux novices confus. Cet article compare Apache et Nginx pour donner à chacun une compréhension et un choix plus clairs.
1. Introduction
Apache :
Apache a été créé en 1995 et a été développé sous l'Apache Software Foundation depuis 1999. Apache est flexible, efficace, dispose de modules d'extension riches et d'un support communautaire actif, ce qui en fait le logiciel de serveur Web open source et gratuit le plus répandu au monde.
Nginx :
Nginx est un serveur Web gratuit et open source écrit par l'ingénieur logiciel russe Igor Sysoev. Depuis son lancement en 2004, nginx s'est concentré sur des performances élevées, une concurrence élevée et une faible utilisation de la mémoire. Et ses fonctionnalités d'équilibrage de charge, de mise en cache, de contrôle d'accès et de bande passante, ainsi que son intégration efficace avec diverses applications l'ont rendu progressivement populaire auprès des utilisateurs.
Ce qui suit est le dernier tableau comparatif des parts de marché des serveurs Web mis à jour le 21 novembre 2017 :
2. Comparaison
Bien qu'Apache et Nginx aient des antécédents différents, leurs fonctions et objectifs sont les mêmes, ils reçoivent les demandes des utilisateurs, puis traitent les demandes et renvoient enfin les résultats du traitement au. utilisateurs.
1. Traitement des liens
La plus grande différence entre Apache et Nginx est la façon dont ils gèrent les connexions. Apache fournit une série de modules multi-traitements grâce auxquels les ressources du système d'exploitation sont utilisées, les processus et les pools de threads sont gérés et les demandes des utilisateurs sont contrôlées et traitées.
Apache fournit trois modules multi-traitements : mpm_prefork, mpm_worker et mpm_envent Ci-dessous, nous expliquerons et comparerons brièvement.
mpm_prefork : Le module génère de nombreux sous-processus, chaque sous-processus est monothread et chaque thread relie une requête, par exemple une relation un-à-un. Par conséquent, si le nombre de requêtes est supérieur au nombre de processus, les performances du serveur ne seront pas satisfaisantes.
mpm_worker : Contrairement à prefork, le processus Worker Neutron est multithread et chaque thread gère une connexion utilisateur. Le nombre de threads est supérieur au nombre de processus, ce qui signifie que les nouvelles connexions peuvent obtenir un thread inactif immédiatement sans attendre que le processus devienne inactif.
mpm_event : ce module est similaire à Worker. La différence est que l'événement peut gérer de longues connexions (keep-alive) pour éviter que les threads ne soient occupés par des requêtes pendant une longue période et entraînent un gaspillage de ressources. dans des scénarios à haute concurrence.
Contrairement à Apache, Nginx est implémenté de manière asynchrone, non bloquante et pilotée par les événements. Le processus de travail Nginx est monothread et chaque thread peut gérer un grand nombre de requêtes utilisateur de manière asynchrone. Voici le schéma de principe de fonctionnement de Nginx :
2. Traitement du contenu statique et dynamique
Qu'il s'agisse de contenu statique ou dynamique, Apache peut le gérer. Apache dispose de capacités intégrées pour analyser et exécuter une variété de langages de script dynamiques (notamment PHP, Python et Perl). sans avoir besoin d'un processeur externe.
Il ne fait aucun doute que le traitement de contenu dynamique est probablement le problème de Nginx. Nginx n'est pas efficace pour traiter le contenu dynamique et nécessite l'aide d'un processeur externe. Ainsi, si votre site dispose de nombreuses fonctionnalités dynamiques, les performances d’Apache pourraient vous convenir davantage. Cependant, bien que Nginx ait de faibles capacités de traitement de contenu dynamique par rapport à Apache, son traitement de contenu statique reste très efficace.
3. Résumé
Apache a un support riche en composants de module, une forte stabilité, peu de BUG et un fort traitement de contenu dynamique.
Nginx est léger, consomme moins de ressources, dispose d'un équilibrage de charge, d'un traitement hautement simultané et d'un traitement de contenu statique efficace.
C'est logique d'exister. Apache et Nginx ont leurs propres atouts en tant que services WEB. Personnellement, je ne pense pas que l'un d'eux remplacera complètement l'autre à l'avenir. L'essentiel est que les utilisateurs examinent attentivement leurs scénarios d'application et décident quel produit choisir en fonction de leurs propres besoins et circonstances. Celui qui leur convient est le meilleur.
Lecture connexe :
Comment configurer le serveur HTTP Apache sous Ubuntu 16.04
Installation et configuration détaillées d'Apache, php7 et mysql5.7 dans CentOS7
Exemple de code pour remplacer le serveur Nginx par Tengine dans un environnement LNMP
Proxy inverse Nginx et pratique d'équilibrage de charge
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!