Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Apache vs NGINX

Par Metomo JOSEPH BERTRAND RAPHAËL Publié le 20/09/2017 à 12:16:19 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Présentation du serveur APACHE

Le logiciel libre Apache HTTP Server (Apache) est un serveur HTTP/HTTPS créé et maintenu au sein de la fondation Apache. C'est le serveur HTTP/HTTPS le plus populaire du World Wide Web. Il est distribué selon les termes de la licence Apache.

Le serveur web Apache a été créé en 1995 et est développé sous la direction de la fondation « Apache Software Foundation » depuis 1999. Il est le plus populaire des serveurs Web depuis 1996, de ce fait il est très bien documenté et beaucoup d’autres projets intégrent ses standards. Il est souvent choisi par les administrateurs pour sa flexibilité et sa puissance. Son point fort : Il peut interpréter un grand nombre de langages sans passer par un logiciel externe.

Apache est le composant Web serveur de la très populaire stack LAMP (Linux, Apache, MySQL, PHP). Bien qu'il existe de nombreuses autres composants de la pile Web ces jours-ci (par exemple, NodeJS, frameworks JS de clients riches, divers services cloud, etc.), LAMP reste très populaire.

Le serveur web Apache dispose d'un ensemble complet de fonctionnalités qui peuvent être activées en installant l'un des quelque 60 modules officiels ou l'un des nombreux autres modules non officiels qui existent également.

Au fil des ans, Apache a développé plusieurs méthodes pour traiter les requêtes Web afin d'améliorer son efficacité (principalement l'utilisation de la RAM et la latence). Dans un monde où de plus en plus de demandes Web simultanées devaient être traitées par des sites, et où les tailles de pages servies étaient beaucoup plus importantes, ces nouvelles méthodologies étaient nécessaires. La méthode de traitement des requêtes Apache peut être configurée de trois façons. Je vais décomposer les trois principaux modules multiprocessus (MPM) ci-dessous:

  1. process model: il s'agit de la méthode "pre-fork" initiale; Il ne s'améliore pas à mesure que le nombre de connexions simultanées augmente, car il consomme beaucoup de RAM et pourrait même refuser des connexions à des charges élevées. Les sites plus petits ne le remarqueront pas, mais des sites plus importants le feront probablement.

  2. worker model: ce modèle crée un processus de contrôle unique qui est responsable du lancement des processus enfants. Chaque processus enfant crée alors un nombre fixe de threads, ainsi qu'un thread d'écoute. Le thread de l'auditeur écoute les connexions et les transmet à un thread pour le traitement à leur arrivée. Bien que ce modèle soit beaucoup mieux que la méthode pre-fork, il peut encore se heurter à des problèmes de mise à l'échelle pour des sites ayant un trafic très élevé, en raison du goulot d'étranglement du processus de contrôle unique.

  3. event model: il est similaire au worker model, mais il crée un thread d'écoute qui écoute les connexions et les transmet à un thread de travail pour le traitement. Ce MPM gère les connexions longues beaucoup plus efficacement sur un seul thread (gestion KeepAlive). Depuis Apache 2.4, le modèle d'événement a été jugé stable et est maintenant le paramètre par défaut si le système d'exploitation peut le supporter.

Présentation du serveur NGINX

Nginx, existe depuis 2002. Il a été conçu dans le but de pouvoir gérer un grand nombre de connexions simultanées. Là où Apache est limité à 256 connections simultanés, Nginx peut en traiter plus de 10000. Sa popularité s’est faite sur le fait qu’il consomme peu de mémoire et est très efficace pour gérer du contenu statique. Il est le plus souvent utilisé pour gérer le contenu statique et relayer le contenu dynamique à un autre service, comme Apache ou Lighttpd.

NGINX a été créé en réponse au défi C10K de gérer au moins 10 000 connexions client simultanées sur un seul serveur. NGINX utilise une architecture asynchrone et événementielle pour gérer ces énormes quantités de connexions. Cette architecture rend la gestion des charges élevées et fluctuantes beaucoup plus prévisible en termes d'utilisation de RAM, d'utilisation du processeur et de latence.

La principale différence entre NGINX et Apache, en termes de modèles d'événements, est que NGINX ne configure pas les processus de travail supplémentaires par connexion. Dans la plupart des cas, la configuration NGINX recommandée exécute un processus de travail par CPU, ce qui maximise l'efficacité du matériel. NGINX dispose également d'un ensemble complet de fonctionnalités et peut effectuer différents rôles de serveur:

  • Un serveur proxy inverse pour le protocole HTTP, HTTPS, SMTP, POP3 et IMAP

  • Un équilibreur de charge et un cache HTTP

  • Un proxy de frontend pour Apache et d'autres serveurs Web, exemple la combinaison entre la flexibilité d'Apache et la bonne performance de contenu statique de NGINX

NGINX prend en charge les gestionnaires FastCGI et SCGI pour le service de scripts de contenu dynamique tels que PHP et Python. Il utilise la pile LEMP: une variante de LAMP en utilisant l'orthographe phonétique de NGINX (Linux, " En-juhn-ex ", MySQL, PHP).

NGINX vs APACHE: performance, support, sécurité et documentation

Comparons maintenant les deux serveurs Web dans plusieurs domaines. Nous trouverons que Apache et NGINX sont des concurrents dignes, mais selon votre cas d'utilisation, l'un peut être mieux adapté à votre projet que l'autre.

Performance

Ci-dessous, nous comparons les performances d'Apache avec celles de NGINX aussi bien dans la déserte de contenu statiques, que dans celle de contenu dynamiques.

  1. Site static: NGINX est environ 2,5 fois plus rapide que Apache en fonction des résultats d'un test de référence exécutant jusqu'à 1 000 connexions simultanées. Un autre benchmark fonctionnant avec 512 connexions simultanées a montré que NGINX est environ deux fois plus rapide et a consommé un peu moins de mémoire (4% en moins). De toute évidence, NGINX sert un contenu statique beaucoup plus rapidement qu'Apache. Si vous avez besoin de beaucoup de contenu statique à des niveaux de concurrence élevés, NGINX se révèle plus efficace.

  2. Sites dynamiques: Un benchmark de 2015 (http://www.speedemy.com/apache-vs-nginx-2015/) comparant la déserte de contenu dynamique par Apache et NGINX a révélé que mpm_event apache, associé au module PHP-FPM, peut gérer à concurrence égale le même nombre de requêtes PHP que NGINX. Une autre comparaison (https://www.conetix.com.au/blog/apache-vs-nginx-vs-openlitespeed-part-1) de performances de serveur Web a montré des résultats similaires. La raison en est que presque tout le temps de traitement de la demande est passé dans l'environnement d'exécution PHP plutôt que dans la partie centrale du serveur Web. L'environnement d'exécution PHP est assez similaire entre les deux serveurs Web.

En termes de PHP (et probablement d'autres langues aussi), la performance des serveurs pour délivrer des page dynamiques est pratiquement égale. Si vous voulez vraiment accélérer le chargement des pages dynamiques, vous avez le choix entre plusieurs options comme: ajouter des applications de mis en cache telles que Varnish ou Memcached, passer à un temps d'exécution PHP plus rapide (p. Ex., HHVM), faire un équilibrage de charge ou ajouter du matériel.

Prise en charge du système d'exploitation

Apache fonctionne sur toutes sortes de systèmes de type Unix (p. Ex., Linux ou BSD) et bénéficie d'un support complet pour Microsoft Windows. NGINX fonctionne également avec plusieurs systèmes modernes de type Unix et bénéficie d'un support pour Windows, mais sa performance Windows n'est pas aussi forte que celle d'autres plates-formes. Apache montre plus d'avantage sur ce point.

Sécurité

Les deux projets ont un excellent bilan de sécurité pour leur base de code C. La base de code NGINX, cependant, est considérablement plus petite par plusieurs ordres de grandeur, ce qui représente certainement un grand avantage sur un point de vue sécurité. Il existe des rapports de vulnérabilité disponibles pour Apache 2.2 et 2.4(https://httpd.apache.org/security_report.html) . NGINX dispose également d'une liste des avis de sécurité récents (http://nginx.org/en/security_advisories.html). Apache offre des conseils de configuration pour la gestion des attaques DDoS (https://httpd.apache.org/docs/trunk/misc/security_tips.html#dos), ainsi que le module mod_evasive pour répondre aux attaques HTTP DoS, DDoS ou brute. Vous pouvez également trouver des ressources utiles pour faire face aux menaces DDoS sur le blog NGINX (https://www.nginx.com/blog/mitigating-ddos-attacks-with-nginx-and-nginx-plus/).

La flexibilité

Nginx et Apache sont extensibles à travers les systèmes de modules, mais la manière dont ils fonctionnent diffère considérablement.

Apache

Le système de module d'Apache vous permet de charger ou de décharger dynamiquement des modules pour satisfaire vos besoins pendant le fonctionnement du serveur. Le noyau Apache est toujours présent, tandis que les modules peuvent être activés ou désactivés, en ajoutant ou en supprimant des fonctionnalités supplémentaires et en conservant le serveur principal. Apache utilise cette fonctionnalité pour une grande variété de tâches. En raison de la maturité de la plate-forme, il existe une vaste bibliothèque de modules disponibles. Ceux-ci peuvent être utilisés pour modifier certaines des fonctionnalités principales du serveur, par exemple mod_php, qui intègre un interpréteur PHP dans chaque worker en cours d'exécution. Cependant, les modules ne se limitent pas au traitement du contenu dynamique. Entre autres fonctions, ils peuvent être utilisés pour réécrire des URL, authentifier des clients, renforcer la sécurité du serveur, enregistrer, mettre en cache, compresser, limiter les taux de transfert et chiffrer. Les modules dynamiques peuvent étendre considérablement la fonctionnalité de base sans beaucoup de travail supplémentaire.

Nginx

Nginx implémente également un système de module, mais il est tout à fait différent du système Apache. Dans Nginx, les modules ne sont pas chargés dynamiquement, ils doivent donc être sélectionnés et compilés dans le logiciel de base.

Pour de nombreux utilisateurs, cela rendra Nginx beaucoup moins flexible. Ceci est particulièrement vrai pour les utilisateurs qui ne sont pas à l'aise de maintenir leur propre logiciel compilé en dehors du système de gestion de package classique de leur distribution. Alors que les paquets de distribution ont tendance à inclure les modules les plus couramment utilisés, si vous avez besoin d'un module non standard, vous devrez créer le serveur à partir des sources vous-même

Cependant, les modules Nginx sont encore très utiles et ils vous permettent de dicter ce que vous voulez à votre serveur en incluant uniquement les fonctionnalités que vous souhaitez utiliser. Certains utilisateurs peuvent également considérer cela comme plus sécurisé, car des composants arbitraires ne peuvent pas être chargé sur le serveur. Les modules Nginx offrent autant de possibilités que sur Apache. Par exemple, les modules Nginx peuvent fournir des fonctions de support, de compression, de limitation de débit, de journalisation, de réécriture, de géolocalisation, d'authentification, de cryptage, de diffusion et de messagerie.

Documentation

La documentation pour Apache (https://httpd.apache.org/docs/2.4/) et NGINX (http://nginx.org/en/docs/) est excellente, y compris le wiki NGINX . NGINX offre également des séances de formation en ligne et sur place sur une variété de sujets NGINX, y compris des examens de certifications.

Le support

Le support de la communauté Apache se fait par le biais de listes de diffusion, IRC et Déploiement de pile . Le support commercial Apache est disponible auprès d'un certain nombre d'entreprises tierces, telles que OpenLogic, mais la Fondation Apache ne gère aucune liste officielle.

NGINX dispose d'un support communautaire via des listes de diffusion, IRC, Stack Overflow et un forum. La société derrière NGINX offre un produit commercial appelé NGINX Plus, qui prend en charge un ensemble de fonctionnalités supplémentaires concernant l'équilibrage de charge, le transfert de média et le suivi.

Conclusion

Les deux serveurs Web, dans leurs dernières versions, peuvent rivaliser l'un avec l'autre dans la plupart des domaines. Pour le contenu statique, NGINX est un roi, mais pour un contenu dynamique, la différence de performance est assez mince. NGINX brille avec certaines de ses fonctionnalités plus avancées (diffusion multimédia, reverse proxy pour les protocoles non HTTP), ainsi que son soutien commercial et sa formation. Les propriétaires de sites Web à fort trafic qui doivent servir beaucoup de contenu statique et / ou de flux multimedia préféreront probablement NGINX (ou utiliseront une combinaison d'Apache et NGINX). Dans la plupart des autres cas d'utilisation de site Web, aussi bien Apache que Nginx feront le travail très bien

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels