Maison  >  Article  >  Opération et maintenance  >  Quelles sont les différences entre Nginx et Apache ?

Quelles sont les différences entre Nginx et Apache ?

WBOY
WBOYavant
2023-05-15 19:46:045545parcourir

Nginx, comme Apache, est un logiciel serveur HTTP. Tous deux adoptent une conception de structure modulaire dans leur implémentation fonctionnelle. Les deux prennent en charge des interfaces de langage communes, telles que PHP, Perl, Python, etc., et prennent également en charge les proxys directs et inverses, l'hébergement virtuel et les URL. réécriture, transmission compressée, transmission cryptée SSL, etc.

La principale différence entre Apache et NGINX réside dans leur architecture de conception. Apache utilise une approche axée sur les processus et crée un nouveau thread pour chaque requête. NGINX utilise une architecture basée sur les événements pour gérer plusieurs requêtes dans un thread.

Quelles sont les différences entre Nginx et Apache ?

Qu'est-ce que le serveur HTTP Apache ?

Le serveur HTTP Apache est un serveur Web multiplateforme open source, également connu sous le nom de « httpd » et Apache. Il gère les marques et les services d'Apache Software Foundation. Le serveur est développé et maintenu par une communauté de développeurs ouverte sous ASF. Apache fonctionne principalement sous Linux et alimente 46 % des sites Web dans le monde. C'est un composant clé de la pile LAMP (Linux, Apache, MySQL, PHP).

Qu'est-ce que le serveur Web NGINX ?

Qu'est-ce que NGINX ? Prononcé ? Il se prononce "Engine X" Il s'agit d'un serveur web sorti en 2004 par Igor Sisoev. Aujourd'hui, c'est bien plus qu'un simple serveur web ! Au début, les gens utilisaient principalement Nginx en complément d'Apache. Il était principalement utilisé pour servir des fichiers statiques, mais aujourd'hui, il est devenu un serveur Web complet qui gère l'ensemble des tâches du serveur Web. Nginx est souvent utilisé comme proxy inverse, équilibreur de charge, proxy de messagerie et cache HTTP. Apache et Nginx sont tous deux les serveurs Web les plus courants sous Linux. Ensemble, ils desservent plus de 50 % du trafic réseau.

Bien qu'Apache et NGINX partagent de nombreuses qualités, ils sont différents à bien des égards. Chacun est remarquable à sa manière et a son propre objectif et son propre schéma. Pour comprendre les différences et tirer des conclusions, passons en revue la comparaison détaillée de bout en bout ci-dessous. Nous mentionnons également le gagnant de chaque point de comparaison à la fin de chaque point.

Quelles sont les différences entre Nginx et Apache ?

Architecture de base

Quand il s'agit d'Apache et de Nginx, la différence fondamentale réside dans leur architecture de conception. Cela signifie qu’ils diffèrent dans la manière dont ils gèrent réellement les connexions et le trafic et réagissent aux différentes conditions de trafic. L’une est une approche axée sur les processus et l’autre est une architecture axée sur les événements.

Apache

approche axée sur les processus, créant un nouveau fil de discussion pour chaque demande. Apache adopte une approche multithread. Il offre une variété de modules de traitement multiples. Ces pré-modules sont essentiellement trois types d’algorithmes de traitement des requêtes. Chacun est utilisé pour différents besoins du serveur. MM (Multiple Processing Module) fournit une architecture flexible pour sélectionner différentes connexions et différents algorithmes de traitement. De plus, différentes versions d'Apache 2 utilisent différents modules de parade. Les trois principaux MM Apache sont : MPM de processus (pré-fork), MPM de travail et MPM d'événement. Par défaut, Apache 2.2 est configuré en mode prefork (mpm_prefork). Il répond à un ensemble de processus, chacun pouvant traiter une seule requête à la fois. En d’autres termes, Apache crée à chaque fois un nouveau thread pour gérer chaque demande de connexion. Un thread est la plus petite séquence d'instructions de programmation pouvant être gérée indépendamment par l'ordonnanceur. Dans la plupart des cas, les threads sont des composants d’un processus. Cependant, l'architecture de base d'Apache peut entraîner une forte consommation de ressources et, par conséquent, provoquer des problèmes de serveur (comme une lenteur). Quelles sont les différences entre Nginx et Apache ?

Nginx

Approche basée sur les événements, gère plusieurs requêtes dans un seul thread, Nginx utilise une architecture basée sur les événements et gère les requêtes de manière asynchrone. Il est conçu pour utiliser des algorithmes de gestion de connexion non bloquants basés sur des événements. Par conséquent, son processus peut gérer des milliers de connexions (requêtes) dans un seul thread de traitement. Ce module de processus de connexion permet à Nginx de fonctionner rapidement et largement avec des ressources limitées. De plus, vous pouvez utiliser Nginx sur des systèmes à faible consommation et sur des systèmes fonctionnant sous une charge importante. Quelles sont les différences entre Nginx et Apache ?

Le gagnant est NGINX – sa structure est légère et son architecture est beaucoup plus rapide qu'Apache. Performances En termes d'Apache et de Nginx, les deux serveurs Web gèrent différemment le contenu statique et dynamique. Ils disent que Nginx est meilleur pour gérer le contenu statique, voyons si c'est vrai !

Contenu statique

Apache

utilise une approche basée sur les fichiers pour diffuser du contenu ou des fichiers statiques. Le contenu ou les fichiers statiques sont généralement des fichiers stockés sur le disque de l'ordinateur serveur, tels que des fichiers CSS, des fichiers JavaScript ou des images. Apache utilise son approche traditionnelle basée sur les fichiers pour le contenu statique.

Nginx

Nginx est le grand frère en matière de diffusion de contenu statique. Étant donné que l'architecture de conception de Nginx est plus capable de gérer la charge, elle est beaucoup plus rapide à diffuser du contenu statique. Il fonctionne 2,5 fois plus rapidement qu'Apache sur la base de tests allant jusqu'à 1 000 connexions simultanées. Nginx sert des ressources statiques et PHP n'a pas besoin de le savoir. Apache, en revanche, gère toutes ces requêtes avec des frais généraux coûteux. Cela rend Nginx plus efficace et moins exigeant en ressources système.

Cette petite image montre une demande de contenu statique, traitée en quelques secondes. Nginx surpasse clairement Apache ici !

Quelles sont les différences entre Nginx et Apache ?

Contenu dynamique

Apache

Apache peut gérer le contenu dynamique au sein du serveur Web lui-même sans recourir à des composants externes. Ainsi, il peut gérer le vôtre. À propos des performances d'Apache par rapport à Nginx : Nginx est presque égal (sinon meilleur) en termes de traitement de contenu dynamique. Vous trouverez ci-dessous une comparaison du nombre de demandes de contenu dynamique. Il n'y a aucune différence d'apparence.

Quelles sont les différences entre Nginx et Apache ?

Nginx

Il ne gère pas le contenu dynamique. En parlant de contenu dynamique, Nginx ne peut pas gérer le contenu dynamique dans un serveur Web comme Apache. Toutes les requêtes avec un contenu Web dynamique sont transmises à un processus externe (par exemple PHP-FPM) pour exécution. Nginx attend que le contenu final soit renvoyé et livré au client. Pour une idée claire, voir cette image : Quelles sont les différences entre Nginx et Apache ?

Lorsqu'il est utilisé avec les gestionnaires SCGI et les modules FastCGI, NGINX peut diffuser du contenu dynamique. Statique : Nginx bat Apache en matière de contenu statique. Dynamique : les deux sont bons pour gérer le contenu dynamique.

Support OS

Le support OS peut être un point important à considérer, en particulier lorsque l'on compare Apache et Nginx. Mais les deux sont presque similaires ici.

Apache

prend en charge tous les systèmes de type Unix, y compris Linux et BSD. Il prend entièrement en charge MS-WindowsApache fonctionnant sur une variété de systèmes de type Unix tels que Linux ou BSD, et prend entièrement en charge Microsoft Windows.

Nginx

prend en charge presque tous les systèmes d'exploitation comme Unix. Partiellement pris en charge sous Windows. Il fonctionne également sur plusieurs systèmes Unix modernes et prend en charge Windows, mais ses performances Windows ne sont pas aussi robustes que celles des autres plates-formes.

Le gagnant est Apache ici.

Configuration distribuée/centralisée

Apache vs Nginx est un sujet bien mérité. Leur configuration les rend différents les uns des autres, les rendant tout aussi intéressants. Voyons quelle configuration est la plus simple et la plus rapide.

Apache

permet une configuration supplémentaire par répertoire via des fichiers .htaccess. Cette architecture permet aux utilisateurs non privilégiés de contrôler certains aspects de leur site Web sans leur accorder l'autorisation de modifier la configuration principale. Celui-ci est énorme !

Nginx

ne permet pas de configuration supplémentaire. Par contre, il présente un inconvénient. Il ne fournit aucune configuration supplémentaire. Cependant, cela fonctionne à votre avantage car cela augmente les performances. En n'autorisant pas la configuration du répertoire, il peut répondre aux requêtes plus rapidement qu'Apache. Il ne nécessite pas de rechercher des fichiers .htaccess ni d'interpréter les demandes créées par l'utilisateur.

Gagnant : Si la configuration est un problème, optez pour Apache ; si la configuration est un problème, optez pour Apache. Si la vitesse est NGinx.

Explication des requêtes

Dans le débat Apache vs Nginx, les méthodes d'interprétation des requêtes sont un sujet intéressant à comparer. Ils traitent et interprètent tous les demandes de manière complètement différente.

Leurs différentes approches les rendent uniques et rendent également l'une un peu meilleure que l'autre. Explorons-le !

Apache

Transmet l'emplacement du système de fichiers, offrant la possibilité d'interpréter les exigences. Une évaluation plus abstraite peut être nécessaire en tant que ressource physique en tant qu'emplacement de système de fichiers. Il transmet la requête en tant qu'emplacement du système de fichiers.

Bien sûr, Apache utilise des emplacements URI, mais ils sont généralement utilisés pour des ressources plus abstraites. Apache utilise le bloc de répertoire sous la racine du document lors de la création ou de la configuration d'un hôte virtuel.

Cette préférence pour l'emplacement du système de fichiers peut également être constatée lors de l'utilisation de fichiers .htaccess pour remplacer des configurations de répertoire spécifiques.

Quelles sont les différences entre Nginx et Apache ?

Nginx

Interprétant les requêtes via URI, Nginx est créé en tant que serveur Web et serveur proxy inverse. En raison de ces exigences architecturales, Nginx fonctionne principalement avec vos yeux. Convertissez en système si nécessaire. Il ne fournit pas de mécanisme pour spécifier la configuration. Pour un répertoire de système de fichiers, transmettez l'URI lui-même. Transmettre la requête (URI) au lieu de l'emplacement du système de fichiers permet à Nginx de s'exécuter facilement sur les serveurs Web et proxy. Il est simplement configuré par la façon dont la mise en page répond aux modèles de requêtes différentielles. Quelles sont les différences entre Nginx et Apache ?

Il ne vérifie pas le système de fichiers tant qu'il n'est pas prêt à répondre à la demande, ce qui explique pourquoi il n'implémente aucune forme de fichier .htaccess. Cette conception d'interprétation des requêtes en tant qu'emplacements URI permet à Nginx d'agir facilement non seulement comme serveur Web, mais également comme serveur proxy, équilibreur de charge et cache HTTP.

De plus, dans la compétition Apache vs Nginx, NGINX gagne à nouveau en termes de taux de transfert (à quelle vitesse les données sont envoyées du serveur au client). Dans la plupart des cas, Nginx gagne par un bon montant de 500/100.

Quelles sont les différences entre Nginx et Apache ?

Gagnant : Il semble que Nginx gagne car il interprète et réagit plus rapidement.

Modules de fonction

Les deux sont extensibles via le système de modules. Mais leur façon de travailler est différente. Comparons les modules fonctionnels de deux serveurs web : Apache vs Nginx !

Apache

60 modules officiels chargeables dynamiquement à activer/désactiver Le serveur Apache dispose d'un riche ensemble de fonctionnalités qui peuvent être activées en installant l'un des 60 modules officiels. Il existe de nombreux autres modules non officiels que l'on peut facilement trouver sur Internet.

Son système de modules vous permet de charger ou décharger dynamiquement des modules en fonction de vos besoins. Ses modules peuvent être activés ou désactivés pour ajouter ou supprimer des fonctionnalités et se connecter au serveur principal.

En bref, Apache dispose de plusieurs modules fonctionnels pour répondre à vos besoins, mais beaucoup d'entre eux ne sont pas fréquemment utilisés.

Nginx

Modules de base tiers (non chargeables dynamiquement) D'autre part, Nginx est sélectionné et compilé dans un plug-in tiers. Il ne peut pas être chargé dynamiquement. Ces modules sont utiles, cependant, ils vous permettent de décider ce que vous souhaitez obtenir du serveur en incluant uniquement les fonctionnalités que vous souhaitez utiliser. Il est considéré comme beaucoup plus sécurisé que le serveur Apache car des composants arbitraires peuvent se connecter au serveur. De plus, NGINX fournit toutes les fonctionnalités de base d'un serveur Web sans sacrifier les fonctionnalités légères et hautes performances dont vous avez besoin pour réussir. Apache est comme Microsoft Word et Nginx est comme le Bloc-notes. Apache propose un million d’options, mais vous n’en avez besoin que de quelques-unes. Nginx fait "quelques" de ces choses et les fait 50 fois plus vite qu'Apache.

Gagnant : NGINX – C'est moins important, mais les fonctionnalités et les modules en font un serveur Web plus léger, plus intelligent et meilleur qu'Apache.

Flexibilité

La flexibilité est l'un des problèmes les plus importants pour les serveurs Web. Il existe des différences intéressantes entre la flexibilité d'Apache et celle de Nginx.

Apache

prend en charge la personnalisation du serveur Web via des modules dynamiques. Le serveur Web peut être personnalisé via le module ride. Les modules dynamiques d'Apache sont les plus longs à charger, tous les modules Apache prennent donc en charge cette fonctionnalité.

Nginx

n'est pas assez flexible pour prendre en charge les modules dynamiques et le chargement. Cependant, ce n'est pas le cas avec NGINX. Début 2016, NGINX a obtenu la prise en charge du chargement dynamique des modules ; auparavant, NGINX exigeait que les administrateurs compilent les modules dans les binaires NGINX. La plupart des modules ne prennent pas encore en charge le chargement dynamique, mais ils le pourront avec le temps. Gagnant : Apache – il est clairement en avance à ce stade.

Sécurité

Apache vs Nginx Security est à nouveau un sujet de débat. Eh bien, les deux serveurs Web offrent une excellente sécurité étendue pour les bases de code basées sur C.

Apache

est très sûr. Apache garantit que tous les sites Web exécutés sur ses serveurs sont à l'abri de tout dommage et attaque de pirate informatique. Par conséquent, il fournit des conseils de configuration pour la gestion des attaques DDoS, ainsi que le module mod_evasive pour répondre aux attaques HTTP DoS, DDoS ou par force brute.

NGINX

Code minimal pour une meilleure sécurité. Cependant, la base de code de NGINX est considérablement plus petite, ce qui représente donc un gros avantage du point de vue de la sécurité. NGINX répertorie également les avis de sécurité récents. Lisez un article sur la défense contre les attaques DDoS sur le blog Nginx. Gagnant : Nginx - Il est considéré comme plus sécurisé

Support

Le support est ce dont chaque client a besoin. Cela peut changer ou interrompre votre expérience utilisateur. Lorsque l’on compare le support Apache et Nginx, il ne semble pas y avoir beaucoup de différence.

Apache

Le support communautaire se fait via des listes de diffusion, IRC et Stack Overflow. Le support commercial d'Apache est disponible auprès de nombreuses sociétés tierces, telles qu'OpenLogic, mais la Fondation Apache ne maintient pas de liste officielle. Le serveur Apache est conçu pour fournir un support puissant à tous ses utilisateurs.

Nginx

Support communautaire via liste de diffusion, IRC, Stack Overflow et forums. La société derrière NGINX propose un produit commercial appelé NGINX Plus, qui prend en charge un ensemble de fonctionnalités supplémentaires autour de l'équilibrage de charge, du streaming multimédia et de la surveillance.

Gagnant : ! Le support pour les deux est presque le même. Les deux serveurs Web sont excellents.

Au final

ni Apache ni nginx ne peuvent être remplacés par l'autre, ils ont leurs forces et leurs faiblesses. Après avoir compris les avantages, les limites et les différences, vous avez probablement déjà une idée du serveur Web qui vous convient le mieux.

Dans notre article sur Apache vs Nginx, 5 points sur 9 ont été remportés par Nginx et 2 points étaient « à égalité » entre Apache et nginx. On voit donc clairement que NGINX est en avance sur Apache.

Quand choisir Apache plutôt que Nginx ?

i) Apache.

NGINX ne prend pas en charge les fichiers .htaccess de type Apache. Cependant, avec Apache, vous avez l'avantage de laisser des utilisateurs non privilégiés contrôler certains aspects importants de leur site Web.

Apparemment, les utilisateurs ne sont pas autorisés à modifier la configuration principale. Les paramètres à l’échelle du système peuvent être remplacés pour chaque répertoire à l’aide de fichiers .htaccess. Pour de meilleures performances, incluez ces directives .htaccess dans le fichier de configuration principal. Dans un environnement d'hébergement partagé, Apache fonctionne mieux grâce à sa configuration .htaccess. P.S. Pour un hébergement dédié ou VPS, Nginx reste la meilleure option.

ii) Avec des fonctionnalités limitées = utiliser Apache

Nginx possède des modules de base très importants. Cependant, Nginx présente certaines limitations fonctionnelles.

S'il existe certaines limitations ou si vous devez utiliser des modules supplémentaires que Nginx ne prend pas en charge, vous souhaiterez peut-être plutôt choisir Apache.

Quand choisir Nginx plutôt qu’Apache ?

i) Traitement rapide du contenu statique

Nginx peut effectuer un meilleur travail dans le traitement des fichiers statiques à partir d'un répertoire spécifique.

De plus, le processus du serveur en amont ne sera pas bloqué en raison d'un grand nombre de demandes de contenu statique car Nginx peut les gérer simultanément. Cela améliore considérablement les performances globales du serveur backend.

Nginx s'efforce continuellement d'offrir aux utilisateurs une meilleure expérience. En 2018, elle a connu une croissance significative. Jetez un œil aux principaux points à retenir de 2018 sur le blog Nginx.

ii) Idéal pour les sites Web à fort trafic

Si nous parlons de vitesse et du nombre de clients pouvant être servis sous une charge élevée, Nginx brillera toujours comme le vainqueur sur Apache.

Cela rend Nginx considérablement léger et idéal pour les ressources du serveur. C'est pourquoi la plupart des développeurs Web préfèrent Nginx à Apache.

Surtout, les boutiques en ligne d’aujourd’hui embauchent un développeur Magento qui sait travailler sur des sites Web à fort trafic et qui maîtrise bien Nginx.

En bref, lorsqu'il s'agit de servir un site Web avec beaucoup de trafic, il n'y a pas de meilleur que Nginx.

Ou utilisez les deux

Utilisez les deux en même temps, vous pouvez les utiliser en combinant les avantages de chaque serveur.

Vous pouvez utiliser Nginx devant Apache comme serveur proxy (comme le montre l'image ci-dessous). Cela tire parti de la vitesse de traitement rapide de Nginx et de sa capacité à établir simultanément de grandes connexions. Quelles sont les différences entre Nginx et Apache ?

Pour les connexions statiques, Nginx servira rapidement les fichiers au client. Pour le contenu dynamique, tel que les fichiers Php, le serveur proxy inverse Nginx transmettra leurs requêtes à Apache, qui pourra ensuite traiter ses résultats et renvoyer la page rendue.

Nginx peut ensuite livrer le contenu final au client. De plus, il vous permet de disposer d'un serveur Web très fonctionnel qui sert vos clients (grand nombre d'utilisateurs) très rapidement.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer