Malgré la distinction évidente entre les expressions « serveur d’application et serveur web », ces deux types de serveurs sont généralement déployés ensemble sur Internet dans un but commun : répondre aux requêtes de contenu d’un site web de la part des utilisateurs. Il n’existe pas de documents standard définissant les propriétés des serveurs web et des serveurs d’application, mais voyons comment ces termes sont communément compris.
La tâche fondamentale d’un serveur web est d’accepter et d’exécuter les requêtes des clients concernant le contenu statique d’un site web (pages HTML, fichiers, images, vidéos, etc.). Le client est presque toujours un navigateur ou une application mobile et la requête prend la forme d’un message HTTP (Hypertext Transfer Protocol), tout comme la réponse du serveur web.
La tâche fondamentale d’un serveur d’application est de fournir à ses clients l’accès à ce que l’on appelle communément la logique d’entreprise, qui génère du contenu dynamique, c’est-à-dire le code qui transforme les données pour fournir la fonctionnalité spécialisée offerte par une entreprise, un service ou une application. Les clients d’un serveur d’application sont souvent des applications elles-mêmes, et peuvent inclure des serveurs web et d’autres serveurs d’application. La communication entre le serveur d’application et ses clients peut prendre la forme de messages HTTP, mais cela n’est pas obligatoire comme pour la communication entre les serveurs web et leurs clients. De nombreux autres protocoles sont populaires, y compris les variantes de CGI.
Dans le cadre d’un déploiement typique, un site web qui fournit à la fois du contenu statique et du contenu généré dynamiquement utilise des serveurs web pour le contenu statique et des serveurs d’application pour générer le contenu de manière dynamique. Un proxy inverse et un équilibreur de charge sont placés devant un ou plusieurs serveurs web et un ou plusieurs serveurs d’application web pour acheminer le trafic vers le serveur approprié, d’abord en fonction du type de contenu demandé, puis en fonction de l’algorithme d’équilibrage de charge configuré. La plupart des programmes d’équilibrage de charge sont également des serveurs proxys inverses, ce qui simplifie l’architecture des serveurs d’application web.
Pourquoi est-ce nécessaire de savoir s’il s’agit d’un serveur d’application ou d’un serveur web ? C’est en grande partie parce que la conception et l’utilisation de ces deux types de serveurs se chevauchent de plus en plus au fur et à mesure que les sites web sont de plus en plus sollicités. De nombreuses applications populaires agissent à la fois comme des serveurs web et des serveurs d’application (par exemple Apache HTTP Server, Express, Hapi et Koa).
De même, certains serveurs web finissent par ressembler à des serveurs d’application parce qu’ils disposent de modules et de fonctionnalités intégrés qui prennent en charge de manière native des langages populaires tels que PHP, ou qui traduisent les requêtes de HTTP dans le protocole (tel que FastCGI) utilisé par l’application.
NGINX Plus et NGINX sont les meilleures solutions d’équilibrage de charge de leur catégorie, utilisées par des sites web à fort trafic tels que Dropbox, Netflix et Zynga. Plus de 350 millions de sites web dans le monde s’appuient sur NGINX Plus et NGINX Open Source pour diffuser leur contenu de manière rapide, fiable et sécurisée.
NGINX Plus est un proxy inverse et un équilibreur de charge extrêmement efficace lorsqu’il est déployé devant des serveurs web et d’application, avec des modules de traduction pour plusieurs types de serveurs d’application, y compris FastCGI et SCGI. NGINX Plus combine de multiples fonctions (y compris le service web, l’équilibrage de charge avancé, la mise en cache, la gestion et la surveillance, et le routage des requêtes) en une seule solution flexible et rentable, pour fournir du contenu statique et dynamique d’une manière rapide et fiable qui augmente la satisfaction des clients et les revenus. C’est actuellement la plateforme complète de livraison d’application essentielle pour les sites web de haute performance.