Pourquoi je trouve Nginx pratiquement mieux qu'Apache

Pourquoi je trouve Nginx pratiquement mieux qu'Apache

Selon la dernière enquête sur le serveur Web de Netcraft, qui a été réalisée vers la fin de 2017 (précisément en novembre), Apache et Nginx sont les serveurs Web open source les plus utilisés sur Internet.

Apache est un serveur HTTP gratuit et open-source pour les systèmes d'exploitation de type UNIX et Windows. Il a été conçu pour être un serveur sécurisé, efficace et extensible qui fournit des services HTTP en synchronisation avec les normes HTTP dominantes.

Depuis son lancement, Apache est le serveur Web le plus populaire sur Internet depuis 1996. Il s'agit de la norme de facto pour les serveurs Web dans l'écosystème Linux et open source. Les nouveaux utilisateurs de Linux trouvent normalement plus facile à configurer et à utiliser.

Nginx (prononcé 'Moteur-x') est un serveur HTTP gratuit, open-source et haute performance, proxy inversé et un serveur proxy IMAP / POP3. Tout comme Apache, il fonctionne également sur des systèmes d'exploitation de type Unix et des fenêtres.

Bien connu pour ses performances élevées, sa stabilité, sa configuration simple et sa faible consommation de ressources, il est devenu si populaire au fil des ans et son utilisation sur Internet se dirige vers de plus grandes hauteurs. C'est maintenant le serveur Web de choix parmi les administrateurs système expérimentés ou les maîtres Web des meilleurs sites.

Certains des sites occupés alimentés par:

  • Apache sont: Paypal, BBC.com, BBC.co.Royaume-Uni, SSllabs.com, pomme.com plus beaucoup plus.
  • Nginx sont: Netflix, Udemy.com, hulu, pinterest, cloudflare, wordpress.com, github, soundcloud et bien d'autres.

Il existe de nombreuses ressources déjà publiées sur le Web concernant la comparaison entre Apache et Nginx (Je veux dire vraiment 'Apache vs nginx«Articles), dont beaucoup expliquent clairement en détail, leurs principales fonctionnalités et leurs opérations dans divers scénarios, y compris les mesures de performance dans les références de laboratoire. Par conséquent, cela ne sera pas abordé ici.

Je partagerai simplement mon expérience et mes réflexions sur l'ensemble du débat, après avoir essayé Apache et Nginx, Les deux dans des environnements de production basés sur les exigences pour l'hébergement d'applications Web modernes, dans la section suivante.

Raisons pour lesquelles je trouve Nginx pratiquement mieux qu'Apache

Voici les raisons pour lesquelles je préfère le serveur Web Nginx à Apache pour la livraison de contenu Web moderne:

1. Nginx est léger

Nginx est l'un des serveurs Web légers. Il a de petites empreintes sur un système par rapport à Apache qui met en œuvre une vaste étendue de fonctionnalité nécessaire pour exécuter une application.

Parce que Nginx rassemble une poignée de fonctionnalités de base, il s'appuie sur des serveurs Web en amont en amont dédiés tels qu'un backend Apache, FastCGI, Memcached, SCGI et UWSGI serveurs ou serveur d'applications, je.E serveurs spécifiques à la langue tels que le nœud.JS, Tomcat, etc.

Par conséquent, son utilisation de la mémoire est bien mieux adaptée aux déploiements de ressources limités, que Apache.

2. Nginx est conçu pour une concurrence élevée

Par opposition à l'architecture axée sur les procédés ou à procédé d'Apache (modèle de connexion à pertinence ou à pertes de filetage), Nginx utilise une architecture évolutive et motivée par événement (asynchrone). Il utilise un modèle de processus responsable qui est adapté aux ressources matérielles disponibles.

Il a un processus maître (qui effectue les opérations privilégiées telles que la configuration de lecture et la liaison aux ports) et qui crée plusieurs processus de travailleurs et d'aide.

Les processus des travailleurs peuvent chacun gérer des milliers de connexions HTTP simultanément, lire et écrire du contenu sur disque et communiquer avec les serveurs en amont. Les processus d'assistance (gestionnaire de cache et chargeur de cache) peuvent gérer les opérations de mise en cache de contenu à risque.

Cela rend ses opérations évolutives et entraînent des performances élevées. Cette approche de conception le rend rapide, favorable aux applications modernes. De plus, des modules tiers peuvent être utilisés pour étendre les fonctionnalités natives dans Nginx.

3. Nginx est facile à configurer

Nginx A une structure de fichiers de configuration simple, ce qui le rend super facile à configurer. Il se compose de modules contrôlés par des directives spécifiées dans le fichier de configuration. De plus, les directives sont divisées en directives de blocs et directives simples.

Une directive de bloc est définie par les accolades ( et ). Si une directive de blocs peut avoir d'autres directives à l'intérieur des accolades, elle s'appelle un contexte tel que les événements, le HTTP, le serveur et l'emplacement.

http server  

Une directive simple se compose du nom et des paramètres séparés par des espaces et se termine par un point-virgule (;).

http server emplacement / ## Ceci est une directive simple appelée root root / var / www / hmtl / exemple.com /;  

Vous pouvez inclure des fichiers de configuration personnalisés à l'aide de la directive inclue, par exemple.

http server  ## Exemples d'inclusion de fichiers de configuration supplémentaires inclut / path / to / config / file / *.conf; inclure / path / vers / config / file / ssl.conf;  

Un exemple pratique pour moi était la façon dont j'ai réussi à configurer facilement Nginx pour exécuter plusieurs sites Web avec différentes versions PHP, ce qui était un peu un défi avec Apache.

4. Nginx est un excellent proxy frontal

L'une des utilisations courantes de Nginx Le configure comme un serveur proxy, dans ce cas, il reçoit des demandes HTTP des clients et les transmet à des serveurs proxyés ou en amont qui ont été mentionnés ci-dessus, sur différents protocoles. Vous pouvez également modifier les en-têtes de demande du client envoyés au serveur proxyé et configurer la mise en mémoire tampon des réponses provenant des serveurs proxés.

Ensuite, il reçoit les réponses des serveurs proxés et les transmet aux clients. Il est plus facile à configurer en tant que serveur proxy par rapport à Apache car les modules requis sont dans la plupart des cas activés par défaut.

5. Nginx est remarquable pour servir un contenu statique

Le contenu statique ou les fichiers sont généralement des fichiers stockés sur le disque sur l'ordinateur du serveur, par exemple les fichiers CSS, les fichiers ou images Javascripts. Considérons un scénario où vous utilisez Nginx comme frontend pour NodeJS (le serveur d'applications).

Bien que le serveur NodeJS (spécifiquement des cadres de nœud) ait intégré des fonctionnalités pour la gestion des fichiers statiques, ils n'ont pas besoin de faire un traitement intensif pour fournir du contenu non dynamique, il est donc pratiquement avantageux de configurer le serveur Web pour servir le contenu statique directement à clients.

Nginx Peut effectuer un bien meilleur travail de gestion des fichiers statiques à partir d'un répertoire spécifique et peut empêcher les demandes d'actifs statiques de l'étouffement des processus de serveur en amont. Cela améliore considérablement les performances globales des serveurs backend.

6. Nginx est un équilibreur de charge efficace

Pour réaliser des performances élevées et une disponibilité pour les applications Web modernes, peut demander à l'exécution de plusieurs instances d'application sur un seul ou des serveurs HTTP distribués. Cela peut à son tour nécessiter la configuration de l'équilibrage de la charge pour distribuer la charge entre vos serveurs HTTP.

Aujourd'hui, l'équilibrage de la charge est devenu une approche largement utilisée pour optimiser l'utilisation des ressources du système d'exploitation, maximiser la flexibilité, réduire la latence, augmenter le débit, rédaction et établir des configurations tolérantes aux pannes - sur plusieurs instances d'application.

Nginx utilise les méthodes d'équilibrage de charge suivantes:

  • tournoi à la ronde (Méthode par défaut) - Les demandes aux serveurs en amont sont distribuées de manière à la ronde (par ordre de la liste des serveurs dans le pool en amont).
  • le moins connecté - Ici, la demande suivante est procassée au serveur avec le moins de connexions actives.
  • ip-hash - Ici, une fonction de hachage est utilisée pour déterminer quel serveur doit être sélectionné pour la demande suivante (en fonction de l'adresse IP du client).
  • Hachage générique - Selon cette méthode, l'administrateur système spécifie un hachage (ou une clé) avec le texte donné, les variables de la demande ou de l'exécution, ou leur combinaison. Par exemple, la clé peut être une IP et un port source, ou URI. Nginx distribue ensuite la charge entre les serveurs en amont en générant un hachage pour la demande actuelle et en le plaçant contre les serveurs en amont.
  • Le moins de temps (Nginx plus) - attribue la demande suivante au serveur en amont avec le moins de connexions actuelles mais favorise les serveurs avec les temps de réponse moyens les plus bas.

7. Nginx est très évolutif

En outre, Nginx est des applications Web hautement évolutives et modernes, en particulier les applications d'entreprise, la demande de technologie qui offre des performances élevées et une évolutivité.

Une entreprise bénéficiant des incroyables fonctionnalités d'évolutivité de Nginx est Cloudflare, Il a réussi à évoluer ses applications Web pour gérer plus de 15 milliards de pages vues mensuelles avec une infrastructure relativement modeste, selon Matthew Prince, co-fondateur et PDG de Nuage.

Pour une explication plus complète, consultez cet article sur le blog Nginx: Nginx VS. Apache: notre vision d'une question vieille de décennie.

Conclusion

Les deux Apache et Nginx ne peuvent pas être remplacés par l'autre, ils ont leurs points forts et faibles. Cependant, Nginx Offre une technologie puissante, flexible, évolutive et sécurisée pour alimenter de manière fiable et efficacement des sites Web et des applications Web modernes. Quelle est votre prise? Faites-nous savoir via le formulaire de rétroaction ci-dessous.