Apache vs Nginx : quel serveur Web est le meilleur choix ?

0
223

Nginx et Apache combinés desservent plus de 50 % du Web. Mais Apache a connu un déclin 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 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 étendu à des centaines de connexions simultanées, Nginx prend une longueur d'avance.

Nginx fonctionne différemment et peut traiter plusieurs connexions au sein d'un seul thread de processus. Il est conçu pour fonctionner également comme un simple proxy inverse, donc 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 plus de deux fois plus rapide qu'Apache lorsqu'il sert du contenu statique, et beaucoup moins gourmand en CPU, ce qui le rend excellent pour s'exécuter sur des systèmes à faible puissance.

Cependant, cette vitesse n'a vraiment d'importance que lors du service. contenu statique à un grand nombre d'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.

Étant donné que 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 les applications Node de rendu côté serveur, où les requêtes HTTP vers les pages dynamiques doivent être transmises à un serveur exécutant Express, mais les ressources statiques (images, feuilles de style, etc.) peuvent être servies à partir de Nginx. La surcharge lors de cette opération est minime et peut accélérer considérablement le contenu statique.

Apache est plus configurable

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 l'exécution de plusieurs sites sur le même serveur très facile. Par exemple, vous pouvez ajouter un bloc VirtualHost comme celui-ci à /etc/httpd/conf/httpd.conf :

<VirtualHost 127.0.0.1:80> DocumentRoot /var/www/html ServerName www.firstsite.com </VirtualHost> Publicité

Cela obligera Apache à acheminer toutes les requêtes vers www.firstsite.com vers un dossier spécifique, qui peut avoir ses propres paramètres indépendants des autres sites exécutés sur le serveur. Cela peut être encore augmenté avec des fichiers .htaccess, qui peuvent écraser la configuration du serveur pour un dossier spécifique. Cependant, l'exécution de sites avec des fichiers .htaccess est plus lente que l'utilisation de la configuration globale et n'est recommandée 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 le principal exemple ).

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

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

Quel serveur devriez-vous choisir ?

Malgré les lacunes, ce sont tous 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 logicielle en plus de Nginx open source. Les deux serveurs sont sécurisés, disposent de bonnes communautés de support et sont faciles à configurer. Bien que Nginx gagne en vitesse, les deux sont comparables pour la diffusion de 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 vitesse et de sa facilité d'utilisation. Si vous avez besoin de plus de configuration, surtout si vous exécutez de nombreux sites Web sur le même serveur, Apache peut mieux fonctionner.

Publicité

Une chose à noter est que si vous faites l'utilisation de PHP, la configuration de Nginx est un peu différente. Apache exécute nativement PHP 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 les deux en charge tous les systèmes Unix, y compris FreeBSD. Bien que Nginx ait techniquement une version qui fonctionne sous Windows, ce n'est pas la meilleure. 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.