NGINX : le serveur Web rapide et économe en ressources

Selon W3Techs, Apache reste le serveur Web le plus utilisé en 2016, avec plus de 50 pourcent d’utilisation par l’ensemble des administrateurs Web. Cependant, si l’on regarde uniquement les 10 000 sites Internet les plus fréquentés, il s’avère que seulement 30 pourcent sont hébergés depuis un serveur Apache, mis à disposition pour la première fois en 1995. Si l’on se restreint aux 1 000 sites Internet les plus populaires, cela représente seulement 27 pourcent.

Cela s’explique d’une part par la forte présence des serveurs Google pour héberger les sites les plus populaires : 10 pourcent des 1 000 sites Web les plus visités (dont tous les sites des services Google) sont hébergés par le géant américain. D’autre part, ce résultat est aussi dû à l’ascension fulgurante de NGINX sur ce marché. Le serveur d’origine Russe enregistrait en 2010 seulement 4 pourcent de parts de marché. Il représente aujourd’hui presque un serveur Web sur deux parmi les 10 000 et 1 000 sites les plus populaires.

Qu’est-ce que NGINX?

Le logiciel de serveur NGINX, développé par le programmeur Igor Sysoev, a été distribué en 2004. L’attention était à l’époque centrée sur le besoin d’un serveur de haute performance, pouvant servir simultanément autant de clients Web que possible, et qui ne soit pas trop gourmand en ressources. Etant donné la propagation croissante de son serveur Web, NGINX a depuis développé, en parallèle de la version libre gratuite, une version payante nommée NGINX Plus avec une assistance intégrée et des fonctionnalités supplémentaires comme un équilibreur de charge, ou load balancer en anglais.

NGINX présente, tout comme Apache, une interface modulaire. Cela signifie que différentes fonctions sont proposés sur les modules correspondants, que les administrateurs choisissent d’activer ou non. Vous avez par exemple le choix entre ces différentes fonctionnalités :

  • Application Acceleration (accélération de l’application) : permet un chargement plus rapide des contenus.
  • Reverse Proxying (proxy inverse) : permet d’utiliser NGINX comme proxy inverse (http, TCP, UDP) pour l’accélération des chargements Web ou l’utilisation d’un proxy email (IMAP, POP3, SMTP).
  • Chiffrement TLS : permet un échange de données sécurisé.
  • Gestion de la bande passante : associe la bande passante optimale pour chaque service proposé.
  • Load Balancing (équilibreur de charge) : répartit les demandes de manière à décharger le serveur principal.
  • Videostreaming (streaming vidéo) : offre une haute performance pour le streaming de fichiers MP4 et FLV.

Tandis qu’Apache ouvre une nouvelle tâche ou processus pour chaque requête client, un serveur NGINX est orienté vers les évènements. De cette manière il peut travailler sur des demandes de manière asynchrone, économisant ainsi de la mémoire vive et du temps. Ce logiciel de serveur est compatible avec un grand nombre de systèmes d’exploitation, notamment Unix/Linux, Mac OS et Windows.

Installer et configurer NGINX

Les utilisateurs de la version payante NGINX Plus disposent d’une assistance à l’installation. En général, l’installation sous Linux s’effectue facilement et ses différentes distributions disposent déjà de NGINX au sein d’un ensemble d’outils intégrés. Dans le cas contraire, il peut être téléchargé sur la page officielle de NGINX. Vous trouverez ci-dessous une explication pour installer et configurer un serveur Web NGINX sous Linux.

1. Avec la commande suivante, vous actualisez les différents éléments du paquet NGINX de manière à posséder les versions les plus récentes (actualisation lancée via la deuxième ligne du code) :

sudo apt-get update
sudo apt-get install nginx

2. NGINX se lance généralement directement à la suite de cette actualisation. Afin de vérifier si le logiciel fonctionne en bonne et due forme, chargez la landingpage de NGINX via le nom de domaine de votre serveur ou l’adresse IP correspondante dans votre navigateur Internet. Si l’installation est réussie, vous obtenez le message suivant :

3. Tout ce dont vous aurez besoin pour la configuration de votre serveur NGINX se trouve dans le dossier /etc/nginx et dans le fichier de configuration nginx.conf. A chaque fois que vous effectuez des modifications dans ces fichiers, il est nécessaire de redémarrer le serveur à l’aide de l’une des commandes suivantes pour qu’elles soient prises en compte :

sudo service nginx reload
sudo service nginx restart

Avec les paramètres stop et start, vous pouvez respectivement interrompre et reprendre le service en cours.

4. La syntaxe du fichier de configuration présente les caractéristiques suivantes :

  • Réglages : tous les réglages commencent par le nom variable respectif. Un espace vide délimite deux arguments et la ligne se termine toujours par un point-virgule.
worker_connections 768;
  • Paramètres avancés : certains paramètres tels que les events-variable comportent des arguments qui leurs sont propres. Ces sous-directives sont entourées par des accolades ({}).
events {
  worker_connections 768;
  multi_accept on;
}

  • Signe dièse (#): Il s’agit de directives (instructions) désactivées à l’aide du caractère dièse. En enlevant ce signe, vous réactivez le réglage correspondant.
# multi_accept on;
  • Tabulations et espaces vides : NGINX interprète les espaces libres multiples et les tabulations comme un seul espace vide. Lors de la configuration de NGINX, il convient de faire attention à la propreté et lisibilité de la structure du ficher de configuration. 

5. Vous trouverez des informations supplémentaires sur les différents modules, ainsi que des tutoriels NGINX sur la configuration de serveurs Web et serveurs proxy sur la page officielle anglophone du développeur.

Pourquoi NGINX est-il si populaire ?

Plusieurs raisons permettent d’expliquer la popularité croissante de NGINX. Tout d’abord, ce logiciel de serveur Web est tout à fait harmonisé avec les attentes de nombreux projets Web. En effet NGINX permet de gérer un nombre élevé de requêtes client simultanément, tout en ménageant les ressources utilisées. Ainsi, cette solution est la réponse parfaite pour les transmissions de données réduites sur les appareils mobiles. Les contenus sont donc chargés rapidement avec NGINX. De plus, ce produit open source développé en Russie convainc grâce à ses possibilités d’utilisation flexibles. Outre le serveur http classique, NGINX propose aussi une fonction de reverse-proxying, permettant par exemple la mise en place d’un serveur proxy ou d’un load balancer.

NGINX n’est cependant pas toujours le meilleur choix de serveur Web : un hébergement partagé de domaines protégés par un mot de passe ou attribué en interne peut être difficile à réaliser. Les réécritures (rewriting) que cela implique ne peuvent qu’être mises dans le dossier principal de configuration et le serveur doit être relancé par la suite. Des erreurs peuvent avoir des conséquences sur tous les acteurs d’un hébergement partagé. Un serveur Apache apporte quant à lui un avantage non négligeable, celui d’attribuer des fichiers .htaccess individuels séparés.