Maison >développement back-end >tutoriel php >Analyse comparative des serveurs PHP Apache et Nginx
Le contenu de cet article concerne l'analyse comparative des serveurs PHP Apache et Nginx. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Comparaison des avantages et des inconvénients d'Apache et de Nginx
1 Avantages de nginx par rapport à Apache :
Léger, peut également servir des services Web et prend moins de mémoire que. apache et ressources
Anti-concurrence, nginx traite les requêtes de manière asynchrone et non bloquante, tandis qu'apache bloque en cas de concurrence élevée, nginx peut maintenir de faibles ressources, une faible consommation et des performances élevées
Hautement modulaire. La conception, l'écriture des modules est relativement simple
La communauté est active, et divers modules performants sont produits rapidement
Les avantages d'apache par rapport à nginx :
réécriture, plus puissant que la réécriture de nginx
Il y a tellement de modules, vous pouvez en gros trouver tout ce à quoi vous pouvez penser
Peu de bugs, nginx a relativement beaucoup de bugs
Super stable
L'existence est la raison, généralement Pour les services Web qui nécessitent des performances, utilisez nginx. Si vous n'avez pas besoin de performances et souhaitez simplement de la stabilité, utilisez Apache. Divers modules fonctionnels de ce dernier sont mieux implémentés que le premier. Par exemple, le module SSL est meilleur que le premier et comporte plus d'éléments configurables. Une chose à noter ici est que le modèle d'E/S réseau epoll (kqueue sur freebsd) est la raison fondamentale des performances de traitement élevées de nginx, mais epoll ne gagne pas dans tous les cas s'il fournit des services statiques, seulement quelques fichiers, le modèle sélectionné d'Apache. peut être plus performant qu'epoll. Bien entendu, il ne s'agit que d'une hypothèse basée sur les principes du modèle d'E/S réseau. L'application réelle doit encore être testée dans la pratique.
2. En tant que serveur Web : par rapport à Apache, Nginx utilise moins de ressources, prend en charge davantage de connexions simultanées et reflète une efficacité plus élevée. Cela rend Nginx particulièrement populaire parmi les fournisseurs d'hébergement virtuel. Dans le cas d'une concurrence de connexion élevée, Nginx est une bonne alternative au serveur Apache : Nginx est l'une des plates-formes logicielles souvent choisies par les propriétaires d'entreprises d'hébergement virtuel aux États-Unis. Elle peut prendre en charge des réponses allant jusqu'à 50 000 connexions simultanées. Nginx pour Nous avons choisi epoll et kqueue comme modèle de développement.
Nginx comme serveur d'équilibrage de charge : Nginx peut non seulement prendre en charge directement les programmes Rails et PHP pour servir en interne, mais également prendre en charge les services externes en tant que serveur proxy HTTP. . Nginx adopte l'écriture en C, la surcharge des ressources système et l'efficacité de l'utilisation du processeur sont bien meilleures que Perlbal
En tant que serveur proxy de messagerie : Nginx est également un très excellent serveur proxy de messagerie (l'un des premiers objectifs de développement). ce produit est également un serveur proxy de messagerie), Last.fm décrit une expérience réussie et merveilleuse
Nginx est un serveur très simple à installer, possède un fichier de configuration très concis (il peut également supporter perl. syntaxe), et présente très peu de bugs : Nginx est particulièrement simple à démarrer, et peut fonctionner quasiment 24h/24 et 7j/7, sans redémarrage même s'il fonctionne pendant plusieurs mois. Vous pouvez également mettre à jour la version du logiciel sans interrompre le service
<.> 3, la configuration de Nginx est simple, Apache est complexe Les performances de traitement statique de Nginx sont plus de 3 fois supérieures à celles d'Apache Le support d'Apache pour PHP est relativement simple, Nginx doit être utilisé avec autres backends Apache a plus de composants que Nginx Maintenant, Nginx est le premier choix pour les serveurs Web 4. La principale différence est qu'Apache est un modèle multi-processus synchrone , et une connexion correspond à un processus ; nginx est asynchrone. Plusieurs connexions (10 000 niveaux) peuvent correspondre à un processus 5. nginx gère bien les fichiers statiques et consomme moins de mémoire. Mais il ne fait aucun doute qu'Apache l'est. toujours le courant dominant et possède de nombreuses fonctionnalités riches. Il doit donc encore être adapté. Bien sûr, s'il est déterminé que nginx répond aux besoins, alors utiliser nginx sera un moyen plus économique 6. utilisation personnelle passée, la capacité de chargement de nginx est bien supérieure à celle d’Apache. Le dernier serveur utilise également nginx. De plus, après avoir modifié la configuration de nginx, vous ne pouvez pas tester s'il y a un problème avec la configuration. Lorsque Apache redémarre, il s'avère que la configuration est incorrecte et elle plantera maintenant. Il existe de nombreux sites de cluster. Le nginx frontal est anti-concurrence et le cluster Apache back-end, la coopération est également bonne. 7. Il est inutile que nginx gère les requêtes dynamiques. Généralement, Apache est requis pour gérer les requêtes dynamiques, et nginx ne convient qu'aux requêtes statiques et inversées. 8. D'après mon expérience personnelle, nginx est un très bon serveur frontal avec de très bonnes performances de chargement. Il est facile d'ouvrir nginx sur Laoben et d'utiliser webbench pour simuler 10 000 requêtes de fichiers statiques. Apache a un bon support pour les langages tels que PHP. De plus, Apache dispose d'un réseau de support solide. Il a été développé plus longtemps que nginx et a moins de bugs. Cependant, Apache a l'inconvénient de ne pas prendre en charge les charges de traitement multicœurs. . Il est recommandé d'utiliser nginx comme frontal et back-end. Pour les grands sites Web, il est recommandé d'utiliser la fonction cluster de nginx9. Il y a deux raisons principales pour lesquelles Nginx est meilleur qu'Apache : 1. Nginx lui-même est un serveur proxy inverse 2. Nginx prend en charge l'équilibrage de charge à 7 couches ; selon les statistiques de NetCraft, statistiques d'avril 2011, Apache représente toujours 62,71 %, tandis que Nginx représente 7,35 %, donc en général, Aapche reste le premier choix pour la plupart des entreprises, car sa technologie mature et sa communauté de développement sont déjà des performances très décentes.
10. Vos besoins en serveur web déterminent votre choix. Dans la plupart des cas, nginx est meilleur qu'APACHE, comme le traitement des fichiers statiques, la prise en charge de PHP-CGI, la fonction de proxy inverse, le cache frontal, la maintenance de la connexion, etc. En mode Apache+PHP (prefork), si le traitement PHP est lent ou si la pression frontale est élevée, il est facile que le nombre de processus Apache augmente, entraînant un déni de service.
11. Vous pouvez jeter un œil au module nginx lua : https://github.com/chaoslaw... Apache a plus de modules que nginx Apache ne peut être implémenté directement avec lua. populaire. Pourquoi ? La plupart des gens sont trop paresseux pour mettre à jour vers nginx ou apprendre de nouvelles choses
12. Pour nginx, j'aime que son fichier de configuration soit écrit de manière très concise. Une configuration régulière rend beaucoup de choses simples et efficaces, consomme moins de ressources et. a des fonctions proxy. Puissant, très adapté au serveur de réponse frontal
13. Apache a des avantages en termes de dynamique de traitement, Nginx a une meilleure concurrence et une faible utilisation de la mémoire CPU. Si la réécriture est fréquente, c'est Apache
.Nginx Les avantages sont :
fonctionne au-dessus de la 7ème couche du réseau et peut élaborer certaines stratégies de détournement pour les applications http, telles que les noms de domaine et les structures de répertoires. sont plus puissants que HAProxy Et la flexibilité est l'une des principales raisons pour lesquelles Nginx est actuellement très populaire et peut être utilisé dans bien plus de situations que LVS sur cette seule base.
Nginx dépend très peu de la stabilité du réseau. En théorie, il peut effectuer des fonctions de chargement tant qu'il peut être pingé. C'est aussi l'un de ses avantages. ; au contraire, LVS Il repose fortement sur la stabilité du réseau, dont je suis pleinement conscient
Nginx est relativement simple à installer et à configurer, et il est plus pratique de le tester ; peut essentiellement imprimer les erreurs dans les journaux. La configuration et les tests de LVS prennent relativement longtemps et LVS s'appuie fortement sur le réseau.
Il peut résister à une pression de charge élevée et est stable si le matériel n'est pas mauvais, il peut généralement prendre en charge des dizaines de milliers de concurrence et le degré de charge est relativement inférieur à celui du LVS.
Nginx peut détecter les pannes internes du serveur via le port, telles que les codes d'état, les délais d'attente, etc. renvoyés par le serveur traitant les pages Web, et soumettra à nouveau les requêtes qui renvoient des erreurs à un autre nœud. , mais l'inconvénient est qu'il ne prend pas en charge la détection d'URL. Par exemple, si l'utilisateur télécharge un fichier et que le nœud traitant le téléchargement échoue pendant le processus de téléchargement, Nginx basculera le téléchargement vers un autre serveur pour le retraitement, et LVS sera directement déconnecté si un fichier volumineux est téléchargé, ou très. fichiers importants, les utilisateurs peuvent être insatisfaits.
Nginx n'est pas seulement un excellent logiciel d'équilibrage de charge/proxy inverse, c'est également un puissant serveur d'applications Web. LNMP est également une architecture web très populaire ces dernières années, et sa stabilité est également très bonne dans les environnements à fort trafic.
Nginx devient désormais de plus en plus mature en tant que cache d'accélération inverse Web et est plus rapide que le serveur Squid traditionnel. Vous pouvez envisager de l'utiliser comme accélérateur de proxy inverse.
Nginx peut être utilisé comme proxy inverse de niveau intermédiaire. À ce niveau, Nginx n'a pratiquement aucun rival. Le seul qui peut se comparer à Nginx est lighttpd. mais j'ai atteint toutes les performances de Nginx. Les fonctions et la configuration ne sont pas aussi claires et faciles à lire, et les informations de la communauté sont beaucoup moins actives que celles de Nginx.
Nginx peut également être utilisé comme page Web statique et serveur d'images, et ses performances dans ce domaine sont inégalées. La communauté Nginx est également très active et il existe de nombreux modules tiers.
Les inconvénients de Nginx sont :
Nginx ne peut prendre en charge que les protocoles http, https et Email, son champ d'application est donc plus petit. est son défaut.
Le contrôle de santé du serveur back-end prend uniquement en charge la détection via les ports et ne prend pas en charge la détection via les URL. La conservation directe de la session n'est pas prise en charge, mais elle peut être résolue via ip_hash.
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!