Critique complète du Hoover FH40160PC FloorMate Deluxe
18 septembre 2020
Top 10 des meilleures peintures de retouche automobile en 2020
18 septembre 2020

Apache contre Nginx

Nginx et Apache combinés servent plus de 50% du Web. Mais Apache a connu une baisse ces dernières années, au profit de Nginx. Nginx est-il vraiment meilleur et y a-t-il des avantages à utiliser Apache?

Nginx est plus récent et plus rapide

Nginx peut traiter plusieurs connexions dans un seul thread de processus

Nginx est beaucoup plus léger qu'Apache. Il s'agit d'un problème enraciné dans la conception: sous le capot, Apache doit créer un nouveau thread de processus pour chaque connexion. Et bien qu'il puisse traiter 10 threads à une vitesse comparable à Nginx, lorsqu'il est mis à l'échelle jusqu'à des centaines de connexions simultanées, Nginx prend une avance décisive.

Nginx fonctionne différemment et peut traiter plusieurs connexions au sein d'un même thread de processus. Il est également conçu pour fonctionner comme un simple proxy inverse. Par conséquent, plutôt que d’apporter la surcharge d’un serveur Web complet, il est simplement conçu pour déplacer des octets de données d’un endroit à un autre. Nginx peut être deux fois plus rapide qu'Apache lors de la diffusion de contenu statique, et beaucoup moins gourmand en CPU, ce qui le rend excellent pour fonctionner sur des systèmes à faible puissance.

Cependant, cette vitesse n'a vraiment d'importance que lorsque vous diffusez du contenu statique à de nombreux utilisateurs à la fois. Lorsque vous commencez à diffuser du contenu dynamique, le goulot d'étranglement se situe ailleurs, comme dans votre moteur PHP, votre application Web ou votre base de données.

Comme Nginx est également un proxy inverse, vous pouvez l'utiliser devant un autre serveur (même Apache) spécifiquement pour héberger du contenu statique. Un exemple utile est celui des applications Node de rendu côté serveur, dans lesquelles les requêtes HTTP vers des pages dynamiques doivent être transmises à un serveur exécutant Express, mais des ressources statiques (images, feuilles de style, etc.) peuvent être servies à partir de Nginx. Les frais généraux associés à cette opération sont minimes et peuvent accélérer considérablement le contenu statique.

Apache est plus configurable

Logo Apache

Apache se concentre davantage sur le fait d'être un serveur Web et possède des fonctionnalités utiles telles que des fichiers de configuration basés sur des répertoires et des hôtes virtuels. Cela rend très facile l'exécution de plusieurs sites sur le même serveur. Par exemple, vous pouvez ajouter un bloc VirtualHost comme celui-ci à /etc/httpd/conf/httpd.conf:


  
  
  
  DocumentRoot / var / www / html
  Nom du serveur www.firstsite.com

Cela obligera Apache à acheminer toutes les demandes vers www.firstsite.com dans un dossier spécifique, qui peut avoir ses propres paramètres indépendamment des autres sites exécutés sur le serveur. Cela peut être encore augmenté avec .htaccess des dossiers, qui peut remplacer la configuration du serveur pour un dossier spécifique. Cependant, l'exécution de sites avec .htaccess files est plus lent que l'utilisation de la configuration globale, et n'est recommandé que dans les cas où vous souhaitez autoriser d'autres utilisateurs à modifier les paramètres du serveur pour un répertoire sans toucher à la configuration globale (l'hébergement partagé en est l'exemple principal).

Nginx peut également servir plusieurs domaines à partir d'un seul serveur et les acheminer vers leurs propres dossiers, mais ce n'est tout simplement pas aussi configurable, en particulier en raison d'un manque de fonctionnalités similaires à .htaccess. Mais si tu vraiment besoin de ce type de fonctionnalité, vous pouvez utiliser Nginx comme proxy inverse pour accéder au contenu servi ailleurs, même en s'exécutant sur une autre instance de Nginx ou plusieurs conteneurs Docker.

Apache a également un bien meilleur support des plugins, sous forme de modules qui peut être chargé dynamiquement sans redémarrer le serveur. Nginx prend également en charge les modules, mais ce n'est que le chargement de modules récemment ajoutés, de sorte que de nombreux modules nécessitent toujours de patcher le binaire.

Quel serveur devriez-vous choisir?

Malgré les lacunes, ce sont tous les deux des serveurs Web décents. Ils sont à la fois gratuits et open source, bien que Nginx ait une version payante appelée Nginx Plus qui ajoute un équilibreur de charge logiciel au-dessus de Nginx open-source. Les deux serveurs sont sécurisés, disposent de bonnes communautés d'assistance et sont faciles à configurer. Alors que Nginx gagne en vitesse, les deux sont comparables pour servir du contenu dynamique.

Si vous ne savez pas lequel utiliser, optez pour Nginx. En général, si vous utilisez un système Unix, Nginx est un bon choix simplement en raison de sa rapidité et de sa facilité d’utilisation. Si vous avez besoin de plus de configuration, en particulier si vous exécutez de nombreux sites Web sur le même serveur, Apache peut mieux fonctionner.

Une chose à noter est que si vous utilisez PHP, la configuration de Nginx est un peu différente. Apache exécute nativement PHP de manière native dans le même processus, en communiquant directement avec le moteur PHP. Nginx l'exécute dans un processus séparé (PHP-FPM) et communique avec lui comme un proxy inverse. Les deux méthodes sont tout aussi rapides, mais votre configuration variera.

Nginx et Apache prennent tous deux pleinement en charge tout système Unix, y compris FreeBSD. Alors que Nginx a techniquement une version qui fonctionne sous Windows, ce n’est pas le meilleur. Apache est entièrement pris en charge sur Windows, et en tant que tel est le serveur Web de référence sur cette plate-forme.

//]]>