Nginx et Apache combinés servent plus de 50% du net. Mais Apache a connu un déclin ces dernières années, une faveur de Nginx. Nginx est-il vraiment meilleur et y a-t-il un avantage à utiliser Apache?
Nginx est plus récent et plus rapide
Nginx est beaucoup plus léger qu'Apache. Il s'agit d'un barrage routier enraciné dans la conception: sous le capot, Apache doit créer un nouveau thread procédural pour chaque connexion. Et bien qu'il puisse traiter 10 threads à des vitesses comparables à Nginx, lorsqu'il est mis à l'échelle à des centaines de connexions simultanées, Nginx prend la tête décisive.
Nginx fonctionne différemment et peut traiter plusieurs connexions au sein d'un seul thread procédural. Il est conçu pour fonctionner également comme un simple proxy inverse, donc au lieu 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 lors de la diffusion de contenu statique, et beaucoup moins gourmand en CPU quand vous le faites, ce qui le rend excellent pour les systèmes à faible puissance.
Malgré cela, cette vitesse n'a d'importance que lorsque l'on propose du contenu statique à de nombreux utilisateurs en même temps. Lorsque vous commencez à diffuser du contenu dynamique, le goulot d'étranglement est ailleurs, comme dans votre moteur PHP, votre application web ou votre base de données.
Parce que Nginx est aussi un proxy inverse, vous pouvez l'utiliser devant un autre serveur (Apache inclus) spécifiquement pour héberger du contenu statique. Un exemple utile est les applications de nœud de rendu côté serveur, où les requêtes HTTP vers les pages dynamiques doivent être transmises à un serveur exécutant Express, mais des ressources statiques (images, Feuilles de style, etc.) peut être assisté depuis Nginx. La surcharge lors de cette opération est minime et peut considérablement accélérer 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 facilite 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
:
<Hôte virtuel 127.0.0.1:80>
DocumentRoot /var/www/html
ServerName www.firstsite.com
</Hôte virtuel>
Apache acheminera ainsi toutes les demandes vers www.firstsite.com
vers un dossier spécifique, qui peut avoir sa propre configuration indépendamment des autres sites en cours d’exécution sur le serveur. Cela peut être encore augmenté avec .htaccess
enregistrements, qui peuvent remplacer les paramètres du serveur pour un dossier spécifique. Malgré cela, exécuter des sites avec .htaccess
fichiers est plus lent que l'utilisation des paramètres globaux, et il 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 aux paramètres globaux (l'hébergement mutualisé en est le principal exemple).
Nginx peut également servir plusieurs domaines à partir d'un seul serveur et les acheminer vers leurs propres dossiers., mais ce n'est pas si configurable, surtout avec un manque de fonctionnalité équivalent à .htaccess
. Mais, si tu Vraiment Si vous avez besoin de ce genre de fonctionnalité, vous pouvez utiliser Nginx comme proxy inverse pour accéder au contenu qui est servi ailleurs, même exécuté sur une autre instance Nginx ou plusieurs conteneurs Docker.
Apache a également une bien meilleure prise en charge des plugins, sous forme de modules qui peut être chargé dynamiquement sans redémarrer le serveur. Nginx prend également en charge les modules, mais ne chargeant que les modules récemment ajoutés, tant de modules nécessitent encore que je patche le binaire.
Quel serveur dois-je sélectionner?
Malgré les lacunes, les deux sont des serveurs Web décents. Les deux sont gratuits et open source, même si Nginx a une version payante appelée Nginx Plus qui ajoute un équilibreur de charge logiciel sur Nginx open source. Les deux serveurs sont sécurisés, ont de bonnes communautés de support et sont faciles à configurer. Bien que Nginx gagne en vitesse, les deux sont comparables dans le service de contenu dynamique.
Si vous ne savez pas lequel utiliser, Elija Nginx. En général, si vous utilisez un système Unix, Nginx est un bon choix simplement pour sa vitesse et sa facilité d'utilisation. Si vous avez besoin de plus de configuration, surtout si vous exécutez plusieurs sites Web à partir du même serveur, Apache peut mieux fonctionner.
Une chose à faire attention est que si vous utilisez PHP, La configuration de Nginx est un peu différente. Apache exécute PHP nativement dans la même procédure, communiquer directement avec le moteur PHP. Nginx l'exécute dans une procédure distincte (PHP-FPM
) et communique avec lui en tant que proxy inverse. Les deux méthodes sont tout aussi rapides, mais ta configuration va varier.
Nginx et Apache sont entièrement compatibles avec n'importe quel système Unix, y compris FreeBSD. Alors que Nginx a techniquement une version s'exécutant sur windows, pas le meilleur. Apache est entièrement compatible avec Windowset, En tant que tel, est le serveur web de référence sur cette plateforme.