Introduction
Le rôle principal d’un serveur web est de servir des pages web pour un site web. Une page web peut être rendue à partir d’un simple fichier HTML ou d’un ensemble complexe de ressources assemblées. Si vous souhaitez héberger votre application web sur Internet, dans de nombreux cas, vous aurez besoin d’un serveur web.
Un des cas d’utilisation les plus courants pour les serveurs web est de servir les fichiers nécessaires au rendu d’un site web dans un navigateur. Lorsque vous visitez http://www.digitalocean.com
, vous commencez par saisir une URL qui déclenche une requête via Internet. Cette requête passe à travers plusieurs couches, dont une ou plusieurs sont un serveur web. Ce serveur web génère une réponse à votre requête, qui dans ce cas est le site web de DigitalOcean, plus précisément la page d’accueil. Idéalement, cela se passe rapidement et avec une disponibilité 24/7.
Alors que tout visiteur de la page d’accueil de DigitalOcean l’expérimente comme une seule page web, la réalité est que la plupart des pages web modernes aujourd’hui sont une combinaison de nombreuses ressources. Les serveurs web agissent comme intermédiaires entre le backend et le frontend, servant des ressources telles que des fichiers HTML et CSS ou des données JSON, toutes générées dynamiquement à la volée ou servies de manière statique. Si vous prévoyez de travailler avec des sites web ou des applications en ligne dans une quelconque mesure, il est extrêmement utile de se familiariser avec les bases de ce qu’est un serveur web et de comment il fonctionne.
Le terme « serveur web » peut se référer soit au logiciel lui-même, soit à l’matériel sur lequel il se trouve, mais cet article se réfère spécifiquement au logiciel de serveur web. Pour plus de détails sur cette différence, consultez notre introduction aux serveurs cloud.
Cas d’utilisation courants
Un serveur web gère les requêtes sur Internet via les protocoles HTTP et HTTPS, et est également appelé un serveur HTTP. Un serveur web se distingue d’autres types de serveurs par le fait qu’il se spécialise dans la gestion de ces requêtes HTTP et HTTPS, se différenciant des serveurs d’applications (par exemple, Gunicorn) et des serveurs pour d’autres protocoles (c’est-à-dire WSGI). Ces autres serveurs travaillent comme des intermédiaires pour les langages de programmation backend via des bibliothèques externes, ce qui est un niveau d’abstraction différent de celui des serveurs web.
Voici quelques tâches courantes gérées par les serveurs web :
- Sert les fichiers HTML, CSS et JavaScript.
- Sert des images et des vidéos.
- Gère les messages d’erreur HTTP.
- Gère les requêtes des utilisateurs, souvent de manière concurrente.
- Dirige la correspondance et la réécriture des URL.
- Traite et sert le contenu dynamique.
- Comprime le contenu pour une optimisation de l’utilisation des données et de la vitesse.
- Permet le caching du navigateur pour votre contenu statique.
En pratique, voici quelques projets personnels qui impliqueraient un serveur web :
- Vous souhaitez créer un site web.
- Vous souhaitez créer une application qui se connecte à Internet.
Cette liste n’est en rien exhaustive, et un serveur web n’est pas strictement limité dans les types de données qu’il peut servir à un utilisateur final. Par exemple, un serveur web qui dessert des requêtes d’API web répond souvent avec des données au format JSON.
Objectifs d’un Serveur Web
Les serveurs web répondent à une audience qui attend de la vitesse, de la disponibilité, de la fiabilité, et plus encore. Ils ont pour but commun de servir du contenu sur Internet, et pour être considéré comme une solution de serveur web viable, les aspects suivants doivent être pris en compte :
- Uptime : Il s’agit du temps pendant lequel un serveur web est en ligne et opérationnel. Les sites web doivent être en ligne en permanence pour servir les utilisateurs, donc un haut uptime est l’objectif. Cela traduit également la stabilité et la prévisibilité. Lorsqu’un utilisateur saisit une URL ou clique sur un lien vers votre site web, la page attendue doit se charger à chaque fois, et à tout moment. Les seules exceptions devraient être les temps d’arrêt planifiés pour les mises à jour ou la maintenance. Un serveur web qui est bogué ou qui s’arrête de manière aléatoire affecte négativement l’expérience de vos utilisateurs.
- Vitesse : Vos pages web devraient charger le plus rapidement possible. Les utilisateurs veulent que leurs demandes soient satisfaites immédiatement, sinon vous risquez de les perdre. Sur une page web qui charge lentement, même si l’utilisateur attend la première charge, chaque charge longue ultérieure diminuera de manière exponentielle leur willingness à rester ou à revenir.
- Concurrence : Il s’agit du traitement de plusieurs requêtes arrivant en même temps. Avoir trop de personnes essayant de visiter votre site web en même temps semble être une bonne chose, mais cela devient un véritable problème lorsque les temps de chargement ralentissent et que votre serveur entier plante. Votre serveur physique ou virtuel n’a qu’un nombre limité de ressources telles que la RAM et la puissance de calcul CPU, et les serveurs web doivent utiliser ces ressources efficacement.
- Évolutivité : L’évolutivité fait référence soit à la multiplication de la puissance de vos serveurs existants par le biais de la mise à l’échelle verticale, soit à l’ajout de plus de serveurs à votre configuration par le biais de la mise à l’échelle horizontale. À mesure que vous développez votre audience, vous pouvez atteindre un point où vous avez besoin de plus d’un ou deux petits serveurs web.
- Facilité de configuration : Mettre en place un projet rapidement est essentiel pour l’itération de votre projet. Un processus d’installation direct et répétable est important pour le premier serveur web que vous configurez, ainsi que pour les multiples serveurs web ultérieurs lorsque vous augmentez d’échelle.
- Documentation : Les serveurs web sont complexes. Les configurations les plus courantes vous mettront sur pied rapidement, mais vos besoins augmenteront au fil du temps. Souvent, vous aurez besoin de fonctionnalités qui ne sont pas aussi couramment utilisées. Lorsque ce moment arrivera, une bonne documentation est essentielle pour créer des solutions personnalisées pour vos besoins.
- Support des développeurs : Si les développeurs principaux ne sont pas engagés dans leur propre projet, vous ne devriez pas engager votre projet dans le leur. Cela inclut à la fois les plans de support à long terme pour leur logiciel, ainsi que le support à court terme immédiat qu’ils fournissent sous forme de corrections de bugs et de patches.
- Support communautaire : Une équipe de développement principale se chargeera de la majeure partie du travail lourd, mais une communauté dynamique contribue à combler les lacunes. Avec les projets open source, cela peut signifier des contributions au code source lui-même, mais une communauté forte répondra également à vos questions et vous aidera avec vos problèmes spécifiques.
Alors que les serveurs Web peuvent offrir不同的 solutions, les solutions qu’ils offrent proviennent d’efforts pour répondre à ces mêmes problèmes. Ces problèmes évoluent au fil du temps avec les besoins et les attentes de l’utilisateur final, rendant cette liste vivante et en constante évolution.
Sélection d’une solution de serveur Web
Les serveurs Web open source les plus populaires actuellement sont Apache et Nginx.
Apache est venu en premier, et a été construit à une époque où il était courant pour plusieurs sites Web avec leurs propres fichiers de configuration individuels de tous exister sur un seul serveur Web. Nginx est venu après Apache, à une époque où les besoins ont changé, passant de la gestion de plusieurs sites Web sur un seul serveur à celui de servir un site Web depuis un serveur de manière extrêmement efficace sous charge.
Les serveurs Web partagent les mêmes objectifs et problèmes, mais l’interprétation et la mise en œuvre de chaque solution seront différentes. Les réponses exactes à ces problèmes définissent l’identité de toute solution de serveur Web donnée. Nginx et Apache sont mis en avant ici en raison de leur ubiquité, mais toute solution de serveur Web sera subjective. Lors de la sélection d’un serveur Web, il est important de garder à l’esprit vos propres besoins pour votre projet spécifique. De cette manière, même si le paysage des offres de serveurs Web change, votre méthode d’évaluation reste ancrée par vos propres exigences.
Voici quelques différentsiateurs clés dans la manière dont les serveurs Web tentent d’atteindre les objectifs d’un serveur Web :
Structure des fichiers de configuration
Les serveurs Web stockent leurs paramètres dans des fichiers de configuration. Vous pouvez personnaliser vos serveurs Web en modifiant ces fichiers. Le stockage et l’organisation des fichiers de configuration sont un problème structuré et subjectif qui sépare les produits de serveurs Web.
Le principal divisor se situe entre la centralisation et la décentralisation. Les fichiers de configuration décentralisés permettent un niveau de contrôle granulaire au niveau du système de fichiers, né d’une nécessité d’héberger plusieurs sites web sur un seul serveur. Les configurations centralisées ne se concentrent pas sur l’hébergement de plusieurs sites web sur un seul serveur, mais se focalisent plutôt sur le service efficace d’un seul site web. Ces configurations s’appuient sur le correspondance de motifs URI, qui consiste à faire correspondre les URL aux noms de fichiers et autres identifiants uniques, au lieu de s’appuyer sur le matching de la structure des répertoires d’un serveur web.
Les fichiers .htaccess
d’Apache facilitent une configuration décentralisée en tant que fonctionnalité, et chaque décision de conception émane de cette concentration sur le système de fichiers avec un niveau de contrôle granulaire. Nginx n’a pas la même concentration sur le système de fichiers et se focalise sur le matching de motifs URI et une configuration centralisée.
Gestion de la concurrence
Les serveurs physiques et virtuels sur lesquels vous exécutez des serveurs web ont des ressources limitées telles que la RAM et le traitement CPU. La manière dont votre serveur web gère fondamentalement ses requêtes aura le plus grand impact sur l’utilisation efficace de vos ressources. Une seule requête peut donner naissance à un processus entier par requête, ou elle peut être traitée de manière événementielle. La capacité de votre serveur web à gérer plusieurs requêtes simultanées de manière efficace est liée à des décisions de conception fondamentales.
Apache gère les requêtes en générant des processus, ce qui consomme des ressources à un rythme qui peut devenir problématique sous charge. Le système de gestion événementielle de Nginx utilise moins de ressources et peut être plus performant sous charge.
Serveur de contenu statique
Outre les pages web, les serveurs web reçoivent des requêtes pour d’autres ressources telles que des images, des vidéos, des fichiers CSS et des fichiers JavaScript. Puisque ces éléments sont toujours les mêmes indépendamment de qui les demande, ce type de contenu est qualifié de statique. Souvent, une page web elle-même n’est qu’un fichier HTML qui n’est pas personnalisé pour la personne qui le demande, et est également traité comme un contenu statique. Les serveurs web peuvent également compresser ce contenu statique pour de meilleures durées de chargement.
Nginx excelle dans le service de contenu statique grâce à son gestionnaire de requêtes événementiel. Apache peut également servir du contenu statique, mais dans la plupart des configurations, pas à la même vitesse et efficacité sous charge que Nginx.
Serveur de contenu dynamique
Lorsque le contenu est modifié, traité et personnalisé en fonction de celui qui le demande, on le qualifie de dynamique. Par exemple, après vous être connecté à un site web, le site web peuple souvent dynamiquement votre nom d’utilisateur dans la barre de navigation supérieure. Le contenu dynamique ajoute une complexité supplémentaire car il oblige le serveur web à traiter de nombreuses requêtes de manière unique au moment où il les reçoit. Un contenu personnalisé par requête ne peut pas être servi à tout le monde et ne peut pas être mis en cache de manière universelle.
Le traitement interne du contenu dynamique supprime une couche d’abstraction supplémentaire qui nécessiterait normalement de transmettre la requête à une bibliothèque externe. Apache implémente nativement le traitement du contenu dynamique, avec des piles de solutions populaires telles que LAMP (Linux, Apache, MySQL, PHP). Nginx est plus agnostique en termes de langage mais nécessite des bibliothèques externes telles que PHP-FPM pour agir comme une solution similaire pour des cas d’utilisation tels que la pile LAMP.
Capacité de Proxy Inversé
Un proxy inversé se place devant un serveur web traditionnel, devenant un serveur intermédiaire qui route le trafic de requêtes HTTP vers les serveurs web situés derrière lui. Un proxy inversé devient la passerelle qui oriente le trafic entre les serveurs web et l’ensemble d’Internet, et il est souvent la couche qui interface directement avec un pare-feu. Bien que la plupart des serveurs web aient la capacité de fonctionner comme un proxy inversé, Nginx a été conçu et optimisé dès le départ pour être un serveur proxy inversé robuste.
L’importance de Nginx dans le monde réel repose fortement sur ses fonctionnalités de proxy inversé et son efficacité. De nombreuses configurations de serveurs placent plusieurs serveurs web traditionnels derrière un proxy inversé Nginx, utilisant Nginx pour déterminer à quel serveur web envoyer la requête en fonction de la charge ou de la configuration des règles. Ce rôle d’intermédiaire lui permet même de s’associer à Apache dans certains réglages, en se plaçant en tant que proxy inversé devant un serveur web Apache traditionnel.
Écosystème de support
Nginx et Apache bénéficient tous deux d’un fort soutien de la part de leurs équipes de développement respectives et de la communauté. Étant les serveurs web open source les plus populaires, les ressources d’apprentissage abondent. Apache est soutenu par l’Apache Software Foundation, une organisation à but non lucratif, et il restera toujours gratuit à utiliser. Le cœur de Nginx est open source, mais certaines fonctionnalités souhaitées sont réservées à leur offre Nginx Plus, avec des fonctionnalités telles que les vérifications de santé des上游, la persistance des sessions et la surveillance avancée.
Alternatives aux serveurs Web traditionnels
Si vous souhaitez un serveur toujours prêt à répondre à une requête HTTP entrante, alors un serveur web est le meilleur choix pour accomplir cette tâche. Plus vous vous éloignez de la concentration sur le service des requêtes HTTP, moins les serveurs web deviennent une solution idéale. Cela est particulièrement vrai pour les fonctionnalités supplémentaires que les serveurs web fournissent. Par exemple, des fonctionnalités telles que le cache peuvent être gérées plus efficacement au niveau du proxy inversé ou du CDN, en fonction de la configuration.
De plus, à mesure que les développeurs ont modifié leurs priorités en consacrant des ressources de développement à la gestion des serveurs web, des solutions telles que serverless, les CMS sans tête et Jamstack sont apparues en réponse. Ces solutions n’exigent pas un serveur web auto-hébergé, mais plutôt abstraient la couche serveur web vers des services externes. Pour les développeurs qui n’ont pas besoin d’un contrôle granulaire ou avancé de la couche serveur web, le temps de développement peut être concentré ailleurs. Pour en savoir plus, consultez cet article sur Jamstack avec un CMS sans tête ou l’implémentation de Jamstack full stack avec la plateforme App de DigitalOcean.
Conclusion
Dans cet article, vous avez passé en revue un guide de base sur ce que sont les serveurs web, comment ils sont utilisés et les problèmes qu’ils tentent de résoudre. Équipé de ces connaissances, vous vous êtes plongé dans le paysage actuel des solutions de serveurs web et avez appliqué vos connaissances pour trouver la solution qui correspond spécifiquement à vos besoins. Pour en savoir plus sur la mise en place et l’utilisation d’un serveur web, consultez le reste de notre série de cours Cloud Curriculum sur les serveurs web.
Ressources supplémentaires
Tutoriels :
- Comment installer Apache : Instructions étape par étape pour configurer votre premier serveur Apache. Cette solution excelle par une configuration décentralisée pour un contrôle granulaire et une gestion interne des pages web dynamiques avec des hooks vers des langages de programmation populaires tels que PHP.
- Comment installer Nginx : Instructions étape par étape pour configurer votre premier serveur Nginx. Cette solution excelle par une configuration centralisée, le service d’actifs statiques, le fonctionnement comme un proxy inversé et la gestion d’un trafic à haute concurrence.
- Apache vs Nginx : Considérations Pratiques : Un aperçu plus approfondi des deux principaux acteurs du paysage des solutions de serveur web.
Produits DigitalOcean:
- Droplets DigitalOcean : Serveurs privés virtuels pour tester et déployer des serveurs web.
- Fonctions DigitalOcean : Solution sans serveur qui peut être une alternative aux serveurs privés virtuels. Évitez la maintenance des serveurs, concentrez-vous sur votre code d’application.
Source:
https://www.digitalocean.com/community/conceptual_articles/web-servers-introduction