Serveurs Apache vs Nginx : la vérité sur ces deux types de serveurs
Publié: 2022-01-03Internet fonctionne sur un ensemble de serveurs. Cependant, ceux-ci ont une configuration différente de celle d'une machine de bureau standard. Un administrateur système averti ou un développeur back-end optimisera ce choix en fonction de ses besoins. Le principal moyen d'y parvenir consiste à choisir un logiciel serveur. Une comparaison populaire dans ce domaine est Apache vs Nginx.
C'est pour un certain nombre de raisons, mais le nombre d'utilisations et la longévité sont les deux principaux. Nginx est plus récent et sans doute plus adapté aux normes Web modernes. Cependant, Apache ne tire pas non plus de coups de poing et est tout aussi capable de servir des sites Web à des millions d'utilisateurs dans le monde.
Dans cet article, nous allons vous donner une comparaison entre Apache et Nginx. Nous allons examiner des éléments au niveau de la surface tels que la popularité des deux types de serveurs. Cependant, nous approfondirons également les caractéristiques techniques et les considérations pour chacun. À la fin, vous connaîtrez les tenants et les aboutissants des deux types de logiciels et celui qui convient le mieux à votre serveur.
Que sont Apache et Nginx
La lecture de cet article signifie que vous comprenez probablement qu'un serveur Web nécessite un logiciel spécialisé afin de fournir des performances optimales. Bien que cet article ne couvre pas ce qu'est un logiciel serveur ou ce qu'il fait dans un sens général, nous couvrirons deux des principales solutions pour votre serveur :
- Apache. Il s'agit d'un logiciel gratuit et open source qui est préinstallé avec la plupart des "distros" Linux. Il existe depuis 1995 et, en raison de ces deux facteurs, occupe une position de leader sur le marché.
- Nginx. Bien qu'il s'agisse d'un bébé relatif par rapport à d'autres logiciels de serveur, Nginx compte de nombreux utilisateurs. À l'heure actuelle, il s'agit presque du premier joint avec Apache pour le logiciel serveur le plus populaire (dont plus tard).
Il convient de noter qu'Apache est le leader des logiciels de serveur depuis des décennies et qu'il a obtenu une part de marché importante pendant cette période. Cependant, Nginx est maintenant le favori, même si ce n'est pas beaucoup.

LÉGENDE : La ligne bleue ici de Google Trends représente les recherches d'Apache depuis 2004, tandis que la ligne rouge concerne Nginx.
Quant à ce qu'Apache et Nginx apportent à la table, cela pourrait remplir plusieurs livres sur le sujet. Cependant, nous allons essayer de le faire en moins de 2 000 mots - en commençant par l'ensemble des fonctionnalités générales des deux.
Les fonctionnalités générales d'Apache et de Nginx
Parce qu'Apache et Nginx sont tous deux des logiciels de serveur Web HTTP, vous trouverez de nombreuses similitudes. Par exemple, ils sont tous les deux open-source, ce qui signifie qu'ils fonctionneront sur une variété de systèmes. Par extension, les deux sont flexibles et extensibles, mais il existe des objectifs différents pour chaque type de serveur.
Cependant, Apache vs Nginx n'est pas une véritable comparaison, dans la mesure où les deux logiciels abordent le processus de configuration d'un serveur Web d'une manière différente. En réalité, les deux conviendront mieux à différentes applications.
Dans le reste de cet article, nous vous montrerons cela à travers une ventilation des détails techniques pour Apache et Nginx. Voici ce que nous allons couvrir :
- Une ventilation technique de chaque type de logiciel de serveur, qui comprend la gestion des demandes et des connexions, les technologies de mise en cache, etc.
- Configuration et extension d'Apache, y compris des détails sur son fichier
.htaccess
et ses modules. - Comment configurer Nginx et son extensibilité.
Cela ne semble pas beaucoup à considérer, mais vous pouvez décompresser chacun dans un certain nombre d'autres sous-sections. Nous allons faire exactement cela, en commençant par les différences techniques.
Les différences techniques entre Apache et Nginx
De manière générale, Apache et Nginx empruntent des chemins presque uniques et exclusifs pour atteindre le même objectif d'un serveur Web optimal. Si vous comparez chacun de manière générale, vous verrez à quel point ils sont différents :
- Apache utilise une architecture "pilotée par les processus", tandis que Nginx utilise une architecture "pilotée par les événements".
- Alors que les deux types de serveurs de fichiers statiques (quoique de manière différente), Nginx ne serveur pas de contenu dynamique.
- Chaque type de logiciel interprète les requêtes HTTP d'une manière différente.
Nous allons examiner certains de ces aspects, en commençant par les considérations de gestion des connexions.
Gestion des connexions
Vous constaterez qu'Apache vs Nginx accorde beaucoup d'importance à la façon dont chaque type gère les connexions et les requêtes. Par exemple, Apache utilise une approche axée sur les processus, où il créera une nouvelle requête pour chaque thread à l'aide d'un module de traitement appelé mpm_prefork
. Cela peut être rapide si le nombre de requêtes est inférieur au nombre de processus, mais il y a ensuite une baisse des performances.
En fait, Apache offre une grande flexibilité pour créer un algorithme de gestion de connexion adapté à vos besoins à l'aide mpm_prefork
, mpm_worker
et mpm_event
. En revanche, la conception de Nginx est telle qu'elle tente d'atténuer les aspects négatifs des performances d'Apache.
Pour ce faire, il génère des processus de travail en fonction des événements. Cela signifie que Nginx est idéal pour la mise à l'échelle, car il peut gérer plusieurs requêtes dans un seul thread.
Demande d'interprétation
Apache et Nginx adoptent également une approche différente pour interpréter les requêtes qu'un serveur recevra. Par exemple, Nginx utilise l'URI (Uniform Resource Identifier) d'une requête pour la traduire en un élément physique du système de fichiers.
Vous pouvez le voir dans le format de certains des blocs de configuration, tels que server
et location
. Ils travaillent ensemble pour analyser un URI et le transformer en quelque chose dans le système de fichiers.
server { listen 80; server_name example.org www.example.org; root /data/www; location / { index index.html index.php; } location ~* \.(gif|jpg|png)$ { expires 30d; } location ~ \.php$ { fastcgi_pass localhost:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
En revanche, les racines d'Apache en tant que logiciel de serveur Web "pur" signifient qu'il suppose et agit sur la base que chaque requête est une ressource dans le système de fichiers. Cependant, Apache peut également fonctionner avec des URI où la requête est plus abstraite. Malgré cela, la documentation met en garde contre l'utilisation d'autre chose que la méthode basée sur les fichiers.
Performances statiques vs dynamiques
En ce qui concerne les performances, Apache vs Nginx est une considération importante pour presque tous les utilisateurs. Dans le contexte, la comparaison se résume à la façon dont chaque type de logiciel sert le contenu statique et dynamique.
Parce que l'architecture inhérente d'Apache fonctionne avec le système de fichiers de manière directe, il est idéal pour servir du contenu statique. Cependant, il traitera également le contenu dynamique au sein du serveur, qui est une implémentation similaire qui est également flexible si vous devez échanger des modules en fonction de vos besoins.

En comparaison, Nginx ne traite aucun contenu dynamique. C'est plus compliqué, car Nginx doit transmettre ces demandes à un travailleur ou à un protocole externe. Même ainsi, vous constaterez qu'il y a moins de surcharge de performances et que Nginx peut utiliser d'autres protocoles avec une plus grande adaptabilité.
Pour le contenu statique, cela peut être aussi simple qu'Apache et, dans certains cas, une option plus performante. En effet, Nginx peut contacter l'interpréteur en cas de besoin, plutôt que de faire partie intégrante des performances globales du logiciel serveur.
Modèle de configuration distribuée d'Apache
Il ne sera pas surprenant qu'Apache et Nginx aient tous deux une approche différente de la configuration de leur serveur. En bref, la configuration d'Apache vs Nginx dépend de la possibilité de le faire au niveau du répertoire.
Apache utilise un modèle distribué, ce qui signifie que vous pouvez configurer le serveur par répertoire. Vous le ferez via des fichiers .htaccess
. Apache vérifiera chaque composant du chemin de fichier demandé pour un fichier .htaccess
et exécutera les directives à l'intérieur.

À notre avis, un fichier .htaccess
est beaucoup plus flexible que tout autre système. Il est rapide à trouver, à ouvrir et à modifier. Le pouvoir à portée de main pour effectuer de nombreuses actions puissantes est grandiose. Vous constaterez également qu'un serveur Apache traitera un fichier .htaccess
chaque fois qu'il en découvrira un, sans qu'il soit nécessaire de recharger le serveur.
C'est également fantastique si vous devez laisser certains utilisateurs contrôler certains aspects de leurs sites en affectant l'ensemble de la configuration du serveur. C'est pourquoi les serveurs Apache sont un pilier des plates-formes d'hébergement mutualisé, avec son système de modules flexibles.
Les modules d'Apache
Vous pouvez charger et décharger des modules de manière dynamique à l'aide d'Apache. Cela s'apparente à l'utilisation de plugins et de thèmes dans WordPress : la fonctionnalité principale d'Apache exécute les étapes fondamentales, tandis que les modules actifs vous aident à créer une expérience unique.
Ces modules peuvent couvrir beaucoup de terrain et il en existe de nombreux. Des modules tels que mod_php
peuvent modifier les fonctionnalités de base du serveur, tandis que le populaire mod_rewrite
vous permet d'effectuer de nombreuses autres tâches :
- Restreindre les adresses IP.
- Modification du dossier d'accueil de votre site.
- Réalisation de redirections 301.
- Définition d'une page d'accueil par défaut.
Entre .htaccess
et le système de modules dynamiques, Apache représente un moyen clair pour la plupart des utilisateurs de bricoler et d'optimiser un serveur Web et un site.
Modèle de configuration centralisée de Nginx
Nginx adopte une approche centralisée de la configuration du serveur. Cela signifie qu'il y a un fichier de configuration (se terminant par une extension .conf
). Il est parfois difficile à trouver en fonction de la structure de votre serveur.
Cela présente des inconvénients évidents pour un propriétaire de site en herbe qui souhaite apporter des modifications à un serveur. Pour les sites en hébergement mutualisé, il est quasiment impossible de configurer le serveur. Il y a aussi beaucoup moins de flexibilité.
Cependant, il existe également quelques avantages, basés sur les performances. Étant donné que Nginx n'a qu'un seul emplacement pour un fichier de configuration et qu'Apache peut potentiellement utiliser plusieurs emplacements, il n'y aura qu'une seule recherche. Par extension, il y aura moins d'impact sur les performances pour localiser ce fichier de configuration également.
Vous constaterez également que la configuration étant centrale, les propriétaires de sites n'auront pas la responsabilité de gérer les aspects liés à la sécurité. C'est une autre aubaine pour l'approche de Nginx, car la responsabilité de la sécurité incombe uniquement à l'administrateur système.
Les modules de Nginx
Il est juste de dire que le système de modules de Nginx est loin d'être aussi permissif ou flexible qu'Apache, bien qu'il offre le même type de fonctionnalités. Prenons par exemple les règles de redirection de Nginx :
server { listen 80; server_name www.olddomain.com; return 301 $scheme://www.newdomain.com$request_uri; }
En effet, vous ne pouvez pas les charger en tant qu'éléments dynamiques avec Nginx. Pour reprendre notre analogie avec WordPress, c'est comme devoir réinstaller tout votre site pour désactiver un plugin.
À première vue, cela ne semble pas réalisable et semble être un énorme préjudice. Cependant, ce qui vous manque en flexibilité, vous gagnez en stabilité et fonctionnalité de base. Si vous savez ce dont votre serveur a besoin au moment de la construction, vous pouvez inclure tous ces composants et modules.
Il y a aussi un aspect de sécurité à considérer. Parce que vous n'échangerez pas de modules dynamiques dans et hors de votre système, vous saurez ce que chaque élément fait et peut faire. Il rend la structure et l'architecture de votre serveur claires et plus faciles à entretenir, ainsi que plus performantes.
Pourquoi utiliser Apache ou Nginx
Pour résumer, Apache vs Nginx n'est pas une décision claire. Pour commencer, l'opinion typique selon laquelle Nginx est plus performant qu'Apache est trompeuse. Si vous configurez bien un serveur Apache, il est tout aussi performant qu'un serveur Nginx équivalent.
Apache est idéal pour servir à la fois du contenu statique et dynamique de manière simple. Il offre une puissance immense pour ceux qui découvrent la gestion d'un serveur, une flexibilité de configuration. De manière générale, vous aurez besoin de moins de connaissances techniques pour configurer un serveur Apache que Nginx.
Cependant, les performances sont là où Nginx brille. La configuration de son architecture garantit qu'il peut atteindre plus par cycle de processeur qu'un serveur Apache. Ceci malgré moins de flexibilité dans la configuration.
Dans certains cas, vous n'aurez peut-être pas le choix entre Apache et Nginx, surtout si vous utilisez un hébergeur mutualisé. Cependant, si vous le faites, le choix dépendra de votre expertise, de vos objectifs et de vos besoins.
Résumé
Votre choix de logiciel serveur est important et vous avez une myriade d'options à votre disposition. En réalité, vous n'allez pas choisir un type de serveur dans le champ gauche. Au lieu de cela, vous choisirez souvent parmi deux ou trois types. Apache vs Nginx est une comparaison souvent envisagée, car les deux offrent des performances et une fiabilité exceptionnelles à long terme.
Cet article a examiné comment Apache vs Nginx se compare sur ces deux fronts et plus encore. Il y a toute une série de considérations techniques à examiner, et cela sera davantage pris en compte dans votre choix que la popularité d'un logiciel serveur particulier parmi la communauté.
Avez-vous un avis sur Apache vs Nginx ? Partagez vos pensées avec nous dans la section des commentaires ci-dessous!