NGINX tutorial

NGINX est un « nouveau » serveur WEB apparu en 2002 qui vient concurrencer de plus en plus APACHE, qui reste pour l'instant majoritaire. Dans cet article, nous allons faire une courte introduction sur NGINX.
Pierre LISERONMis à jour le 12 Août 2014

Quest ce que NGINX?

NGINX est un « nouveau » serveur WEB apparu en 2002 qui vient concurrencer de plus en plus APACHE, qui reste pour linstant majoritaire. Dans cet article, nous allons faire une courte introduction sur NGINX.

Pourquoi NGINX?

NGINX à la différence dAPACHE, nutilise pas un modèle Thread Driven mais un modèle Event Driven. La différence principale entre ces deux approches est la suivante:

Modèle Thread Driven

Dans un modèle Thread Driven, un thread est créé dès quun client demande une page web. Ce thread va être responsable du traitement de lintégralité de la page web. Quand ce thread attend une I/O (entrée / sortie), il se bloque et passe son tour au prochain Thread. Cette stratégie pose problème dans le cas dun très grand nombre de connexions simultanées car, un très grand nombre de thread sont créés et se bloquent les uns les autres. De plus, comme chaque thread possède sa propre pile dappel et son pointeur dinstruction, une overhead non négligeable est à prendre en compte. Ainsi pour répondre au fameux problème c10k, cette architecture ne semble pas (plus) la mieux adaptée.

Modèle Event Driven

Dans un modèle Event Driven, au contraire on ne retrouve « quun seul thread » qui traite toutes les requêtes puis les dispatche sur des handlers compétents qui eux même redispathent si nécessaire. Dans cette approche, très peut de thread sont créées, ce qui améliore les performance générale de cette approche dans le cas du problème c10k. Pour information, NGINX utilise le pattern de conception réactor.

Problème c10k

Pour rappel, ce problème est celui dêtre en mesure de gérer 10 000 connexions simultanées sur un serveur web (ce qui est le cas de plus en plus de site web actuel)

Installation de NGINX.

Pour ceux qui possède une debian ou une distribution avec gestionnaire de paquet, linstallation de NGINX est triviale et se résume le plus souvent à un apt-get install nginx. (ou équivalent).

Il est aussi possible de le compiler très simplement depuis les sources. Ceci savère utile quand lon souhaite utiliser des modules qui ne sont pas fournis par défaut dans les distributions, ou que lon souhaite utiliser un version différente de la version stable.

Dans la version de base dNGINX (qui se prononce engine-x), on trouve les modules suivants, ces modules ne peuvent pas être désactivés:

Nom Description
Core module Outils et directives essentiels tels la gestion des processus ou la sécurité
Events module Permet de configurer les mécanismes internes de la capacité de mise en réseau
Configuration module Permet d’utiliser le système d’inclusion

L’intégralité de la configuration de ces modules se trouve dans le fichier nginx.conf.

Voici les autres fichiers de configurations dNGINX.

Nom Description
nginx.conf Configuration de base de l’application
mime.types Une liste d’extensions de fichiers avec leurs types MIME associés
Fastcgi.conf FastCgi configuration
Proxy.conf Configuration Proxy

Configuration NGINX les basiques

Diminutifs

Vous pouvez utiliser des diminutifs dans les valeurs de vos directives.

  • k or K: Kilobytes
  • m or M: Megabytes

Variables

Les modules fournissent également des variables qui peuvent être utilisées dans la définition des valeurs des directives.

Par exemple, le module de base Nginx HTTP définit la variable $__nginx_version.

Les variables dans Nginx commencent toujours par « $ »-le signe de dollar.

Chaînes de caractères

Les chaînes de caractère peuvent être écrites de plusieurs manières différentes :

  1. Sans côtes : root /home/axopen.com/www;
  2. Avec des simples côtes : root /home/axopen.com/**my** web pages;
  3. Avec un backslash

Configuration de base NGINX

Dans le fichier nginx.conf, les paramètres importants sont les suivants:

vim user _nginx nginx; // Spécifie lutilisateur et le groupe avec lequel le serveur est lancé_

vim worker_processes _4; // Spécifie le nombre de worker process. Mettre le nombre de coeur CPU que vous possédez si vous ne savez pas quoi mettre._

Puis il faut configurer les blocs http qui correspondent aux virtuals hosts dAPACHE. Pour ce faire, voici un exemple de configuration simple pour répondre au pages web dun serveur nommé axopen.com. Voilà, vous avez ainsi un petit serveur HTTP basique pour traiter des requêtes avec NGINX.

 

http {
  gzip on;
  server {
    server_name axopen.com;
    listen 80;
     location / {
       try_files $uri $uri/ /index.html;
   }
  }
}