Ceci est une ancienne révision du document !



Nginx : serveur Web asynchrone

Attention cette page est en cours de rédaction. Vous pouvez l'éditer et y contribuer en améliorant son contenu.

Nginx (Engine X) est un serveur Web asynchrone écrit par Igor Sysoev pour les besoins d'un site russe à très fort trafic. Il peut être configuré pour être un serveur proxy inverse Web et un serveur proxy de messagerie électronique (IMAP / POP3). Une partie de la documentation a été traduite du russe vers l'anglais. Ses sources sont disponibles sous une licence de type BSD.

Pour installer Nginx, il suffit d'installer le paquet nginx, puis de l'activer en saisissant dans un terminal la commande suivante :

sudo /etc/init.d/nginx restart

Dans certains cas, le redémarrage s'effectue en saisissant :

sudo service nginx restart

Configuration de Nginx

Le fichier de configuration du serveur web Nginx se trouve dans /etc/nginx/nginx.conf

Si vous désirez l'éditer, modifier (avec les droits administrateur) le fichier /etc/nginx/nginx.conf

Nginx et les Virutal Hosts (vhosts)

Nginx inclus un exemple de configuration d'un vhost que vous pouvez trouver dans /etc/nginx/sites-available/default

Si vous souhaitez l'éditer, modifier (avec les droits administrateur) le fichier /etc/nginx/sites-available/default

Pour configurer votre nom de domaine (vhost), vous pouvez copier la configuration par défaut du vhost "default" puis y apporter vos modifications. Exemple :

cp /etc/nginx/sites-available/default /etc/nginx/sites-available/mondomaine.tld

Puis, éditez la configuration de votre nom de domaine mondomaine.tld en modifiant le fichier /etc/nginx/sites-available/mondomaine.tld

Le sous-répertoire sites-available stocke les vhosts mais pour que Nginx les prenne en considération, vous devez les activer en créant un lien symbolique dans /etc/nginx/sites-enabled

Pour créer un lien symbolique et activer votre vhost :

sudo ln -s /etc/nginx/sites-available/mondomaine.tld /etc/nginx/sites-enabled/mondomaine.tld

Il ne reste qu'à redémarrer Nginx :

sudo /etc/init.d/nginx restart

Configuration serveur proxy inverse et cache Web

Cette section est en cours de rédaction ! Certain termes ne sont pas très "académiques" n'hésiter pas à les modifiers si vous les connaissez.

La configuration qui va suivre se décomposeras en 3 parties la paramétrage globale du serveur nginx, le paramétrage des fonctions des reverse proxy et de cache et un exemple de configuration du serveur web se trouvant derrière le reverse proxy.

Les fichiers et les dossiers de configuration utilisés seront

/etc/nginx/nginx.conf
/etc/nginx/conf.d/proxy.conf
/etc/nginx/sites-enabled/
/etc/nginx/sites-available/

Cette séparation a pour but d'ajouter de la clarté dans la configuration car tout les fichiers de configuration sont inclus dans le fichier nginx.conf.

Configuration globale du serveur

La configuration se fait dans le fichier /etc/nginx/nginx.conf

Contenu du fichier

user www-data;
worker_processes  1;
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;
events {
	worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type application/octet-stream;
    access_log  /var/log/nginx/access.log;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;
    # envoi moins d'information sur le serveur
    server_tokens off;

     # taille des buffers et taille max des requêtes normales
    client_body_buffer_size 1k;
    client_max_body_size    8m;
    large_client_header_buffers 1 1K;
    ignore_invalid_headers on;
    # timeout
    client_body_timeout 5;
    client_header_timeout 5;
    keepalive_timeout 5 5;
    send_timeout 5;
    ignore_invalid_headers on;
    server_name_in_redirect off;
    # active la compression des pages sauf pour les navigateurs pourris
    gzip  on;
    gzip_comp_level 6;
    gzip_proxied any;
    gzip_vary on;
    gzip_types  text/plain text/css application/x-javascript;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    
    # limitation du nombre de connexion par client
     limit_zone gulag $binary_remote_addr 1m;
     limit_conn gulag 50;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}
options explications
user utilisateur avec lequel sera lancé le processus, celui ci doit avoir le moins de privilèges possible
worker_processes corespond au nombre de coeurs
worker_connections fixer ce paramètre en fonction du calcul ci dessous (valable que sur un reverse proxy) max_clients = worker_processes * worker_connections/4
access_log chemin vers le fichier log des connexions
error_log chemin vers le fichier log des erreurs
default_type type par défaut des fichiers dont le type n'est pas répertorier dans le fichier mimes.types
server_tokens off permet de divulger moins d'information sur le reverse proxy
client_body_buffer_size définit la taille au dela de laquelle la requete sera enregistrée dans un fichier
client_max_body_size taille max des donnes envoyés par un client
large_client_header_buffers définit le nombre de buffer ainsi que leurs tailles, la taille max de la requete uri est donc la multiplication de ces deux chiffres
client_body_timeout Si le client n'evoie pas la totalité de sa requête en 5 sec c'est mort !
client_header_timeout Si le client n'envoie pas l'entete de sa requête même traitement
keepalive_timeout 5 5 premier chiffre temps max d'une connexion keepalive, deuxième chiffre indication de cette valeur dans le champ timeout de l'entête de la réponse
keepalive_requests 100 nombre de requête keep alive sur une connexion
send_timeout temps maximum de latence lors d'un envoi
ignore_invalid_headers supprime les requêtes malformés
server_name_in_redirect désactive la réécriture du nom de serveur, protection contre les scans
gzip activation ou désactivation de la compression
gzip_comp_level niveau de compression (peut aller jusqu'à 9)
gzip_proxied any activer la compression pour la réponse du serveur web derrière le reverse proxy

Paramétrage des fonctions reverse proxy et cache

Exemple de configuration d'un serveur web arrière

Autres configurations de Nginx

  • nginx.1277900834.txt.gz
  • Dernière modification: Le 18/04/2011, 14:59
  • (modification externe)