Tutoprotect T1 extunderscore Nginx Documentation

Transcription

Tutoprotect T1 extunderscore Nginx Documentation
Tuto_Nginx Documentation
Version 0.1
Aurelazy
23 June 2015
Table des matières
1
2
3
Installation
1.1 GCC - Compilateur. . . . . . . . . . . . . .
1.2 PCRE - Perl Compatible Regular Expression.
1.3 Zlib - Compression. . . . . . . . . . . . . .
1.4 OpenSSL . . . . . . . . . . . . . . . . . . .
1.5 Télécharger Nginx. . . . . . . . . . . . . . .
1.6 Les options de configuration. . . . . . . . .
1.7 Erreurs lors de la configuration . . . . . . .
1.8 Lancer la configuration . . . . . . . . . . . .
1.9 Compilation et installation. . . . . . . . . .
1.10 Création du lien symbolique. . . . . . . . . .
1.11 Démarrer et arreter le daemon. . . . . . . . .
1.12 Tester la configuration. . . . . . . . . . . . .
1.13 Ajouter Nginx en tant que service système. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
3
4
4
4
5
5
6
6
7
7
7
8
Configuration basique de Nginx
2.1 Fichier de configuration. . . . . . . . . .
2.2 Organisation et inclusion. . . . . . . . .
2.3 Les directives en bloque. . . . . . . . . .
2.4 Les directives des modules noyau. . . . .
2.5 Les modules d’évenements. . . . . . . .
2.6 Les modules de configuration. . . . . . .
2.7 Travailler sur la configuration par défaut.
2.8 Les tests de perforance. . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
11
13
14
14
16
16
16
17
Indices and tables
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19
i
ii
Tuto_Nginx Documentation, Version 0.1
Contents :
Table des matières
1
Tuto_Nginx Documentation, Version 0.1
2
Table des matières
CHAPITRE 1
Installation
Dans ce chapitre, nous allons voir comment installer le serveur web Nginx sur une distribution Debian 8. Nous verrons
comment installer celui-ci depuis son code source et non depuis le paquet présent sur les dépots, et ce, pour disposer
de la dernière version disponible.
Pour faire l’installation depuis les sources, nous aurons besoin de certains modules.
1.1 GCC - Compilateur.
Pour vérifier que celui-ci est présent sur notre distribution, nous pouvons lancer la commande suivante :
Note : GCC va permettre de compiler plusieurs langages, tel que : C, C++, Java, Ada, FORTRAN, ...
$ gcc
Si nous récupérons la sortie suivante, le compilateur est bien installé :
gcc: fatal error: no input files
compilation terminated.
Par contre, si nous récupérons la sortie suivante, il faudra installer le compilateur :
~bash: gcc: comand not found
Voici les comandes à lancer pour l’installer :
# yum groupinstall "Development Tools"
ou
# apt-get install build-essentials
1.2 PCRE - Perl Compatible Regular Expression.
Cette librairie est requise pour l’installation de Nginx. Les modules “Rewrite” et “HTTP Core” utilisent cette librairie
pour la syntax des expressions regulières. 2 paquets sont requis :
1. pcre
2. pcre-devel
3
Tuto_Nginx Documentation, Version 0.1
On va installer ces 2 paquets :
# yum install pcre pcre-devel
# apt-get install libpcre3 libpcre3-dev
1.3 Zlib - Compression.
Ce paquet est requis pour l’utilisation de gzip. 2 paquets sont requis :
1. zlib1g
2. zlib1g-dev
# yum install zlib zlib-devel
# apt-get install zlib1g zlib1g-dev
1.4 OpenSSL
Cette librairie permet de servir des pages web securisées. 2 paquets sont requis :
1. openssl
2. openssl-dev
# yum install openssl openssl-devel
# apt-get install openssl opensll-dev
Note : Lors de l’installation sur Debian 8, openssl-dev n’etait pas présent.
Nous pouvons maintenant installer Nginx depuis les sources.
1.5 Télécharger Nginx.
Tout d’abord, on vérifie la version stable actuelle depuis le site Nginx.
Au moment où nous écrivons ce tutoriel, la version stable est la 1.8.0, pour la télécharger, il suffit de lancer la commande suivante :
$ mkdir src && cd src
$ wget http://nginx.org/download/nginx-1.8.0.tar.gz
--2015-06-17 15:00:46-- http://nginx.org/download/nginx-1.8.0.tar.gz
Résolution de nginx.org (nginx.org)... 206.251.255.63, 2606:7100:1:69::3f
Connexion à nginx.org (nginx.org)|206.251.255.63|:80... connecté.
requête HTTP transmise, en attente de la réponse... 200 OK
Taille : 832104 (813K) [application/octet-stream]
Sauvegarde en : « nginx-1.8.0.tar.gz »
nginx-1.8.0.tar.gz
100%[=============================>] 812,60K
2015-06-17 15:00:48 (376 KB/s) -- « nginx-1.8.0.tar.gz » sauvegardé [832104/832104]
4
Chapitre 1. Installation
376KB/s
ds
Tuto_Nginx Documentation, Version 0.1
Ensuite, nous allons extraire l’archive dans le dossier courant :
$ tar zxvf nginx-1.8.0.tar.gz
Nous allons à présent, configurer le processus de compilation pour que le binaire soit parfaitement compatible avec
notre OS.
1.6 Les options de configuration.
Il y a habituellement 3 étapes lorsque l’on installe une application depuis les sources :
— La configuration
— La compilation
— L’installation
L’étape de configuration permet la séléction d’options qui ne seront plus éditables après l’installation. Il est donc
fortement recommandé de suivre les étapes si nous ne voulons pas avoir des surprises plus tard, comme des modules
inexistants ou des fichiers au mauvais endroit.
1.6.1 Pour une installation par défaut
$ cd nginx-1.8.0/
# ./configure
# make
# make install
Le dossier d’installation sera, par défaut, /usr/local/nginx. Pour avoir un aperçu des options possible lors de la
configuration, on peut lancer la commande suivante :
$ ./configure --help
1.6.2 L’option –prefix.
Durant la configuration, une attention particulière doit être porté à l’option --prefix. C’est l’emplacement où va
être installé Nginx, par défaut, /usr/local/nginx. Le problème avec cet emplacement, sera lors d’un upgrade de
Nginx, la nouvelle installation va écraser les anciens fichiers de configuration. Il est donc recommandé d’utiliser un
prefix pour chaque version :
./configure --prefix=/usr/local/nginx-1.8.0
En complément, pour pouvoir faire des changements simple lors d’un upgrade de version, est de créer un lien symbolique /usr/local/nginx qui va pointer sur /usr/local/nginx-1.8.0. Une fois l’upgrade effectué, il suffit
de modifier le lien pour le faire pointer sur /usr/local/nginx-newer.verion. Ce qui va permettre au script
init d’utiliser à chaque fois la dernière version de Nginx.
1.7 Erreurs lors de la configuration
Dans certains cas, la comande de configuration peut échouer. Dans la plupart des cas, ces erreurs peuvent provenir
d’un chemin non spécifié ou manquant, ou de modules/paquets requis manquant.
1.6. Les options de configuration.
5
Tuto_Nginx Documentation, Version 0.1
Dans ce cas, il faudra procéder attentivement à certaines vérifications pour être sûr que l’application pourra être
compilé. On peut également consulter le fichier objs/autoconf.err pour plus de détails sur les erreurs de compilation. Ce fichier est généré pendant le processus de configuration et fera apparaître l’endroit où le processus a
échoué.
1.7.1 S’assurer de l’installation des pre-requis.
Il y a au minimum 4 pre-requis :
— GCC
— PCRE
— zlib
— OpenSSL
Les 3 derniers sont fournis en 2 paquets distinct : la librairie et les sources de developement.
Un autre erreurs peut venir du fait que le script de configuration ne peut trouver les fichiers de ces modules.
Lors du lancement de la configuration, on peut ajouter le chemin :
./configure [...] --with-openssl=/usr/lib64
On peut également s’assurer des droits d’accées aux dossier/fichiers.
1.8 Lancer la configuration
Nous allons lancer la configuration par défaut avec juste un prefix différent :
./configure --prefix=/usr/local/nginx-1.8.0
Normallement, la configuration doit se passer sans encombre, si non, voir les chapitres précédent.
1.9 Compilation et installation.
Après le succès de la configuration on peut lancer la compilation. Pour lancer cette compilation, il faut lancer la
commande make dans le dossier source du projet :
$ make
Sur la Debian 8, make n’est pas installé par défaut. Il suffit de lancer le gestionnaire de paquet :
# apt-get install make
Note : Après lancement de make une erreur de permissions apparaît sur les fichiers contenus dans le dossier objs/.
Il suffit de faire un chown -R <user>:<group> objs/
Si la compilation a réussi, on devrait avoir la sortie suivante :
make[1]: Leaving directory '[path]/src/nginx-1.8.0'
On peut maintenant lancer l’installation de Nginx. On doit lancer cette commande avec les privilèges root :
# make install
Il ne devrait pas y avoir d’erreur durant l’installation.
6
Chapitre 1. Installation
Tuto_Nginx Documentation, Version 0.1
1.10 Création du lien symbolique.
On va créer un lien symbolique comme dit plus haut, voici la commande :
ln -s /usr/local/nginx-1.8.0 /usr/local/nginx
Donne :
# cd /usr/local
# ls -al
...
lrwxrwxrwx 1 root staff
22 juin
drwxr-sr-x 6 root staff 4096 juin
...
17 18:19 nginx -> /usr/local/nginx-1.8.0
17 18:18 nginx-1.8.0
1.11 Démarrer et arreter le daemon.
Pour démarrer Nginx, il suffit de lancer la commande suivante :
/usr/local/nginx/sbin/nginx
Si le daemon est déjà en cours, un message d’erreur apparait :
....
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
On peut aussi vérifier que le daemon est en cours en lançant la commande suivante :
netstat -laputen | grep 80
tcp
0
0 0.0.0.0:80
0.0.0.0:*
LISTEN
0
83055
Lorsque le daemon est en cours, on peut lancer les commandes suivantes :
Commande
nginx -s stop
nginx -s quit
nginx -s reopen
nginx -s reload
Description
Stop le daemon immédiatement
Stop le daemon élégament
Re-ouvre les fichiers de log
Relance la configuration
Lorsque l’on démarre, arrête, ou n’importe quel des commandes précédentes, le daemon va vérifier la configuration.
Si la configuration n’est pas bonne la commande va échouer, même si nous voulons arreter le daemon.
La manière forte pour arrêter la processus est d’utiliser kill ou killall :
# killall nginx
1.12 Tester la configuration.
Le script nginx permet avec l’option -t de tester la configuration en cours. Ce qui permet après un changement de
la configuration de voir si une erreur a été insérer avant de relancer le daemon.
1.10. Création du lien symbolique.
7
Tuto_Nginx Documentation, Version 0.1
$ /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx-1.8.0/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx-1.8.0/conf/nginx.conf test is successful
Par contre, il est fortement recomandé de ne pas travailler directement sur le fichier de configuration en production.
Il est préférable de créer un fichier de configuration test situé dans un dossier séparé, comme notre dossier perso,
/home/<mon_login>/test.conf. On peut, de ce fait, tester notre copie de configuration au lieu du fichier de
configuration lui-même :
$ .nginx -t -c /home/<mon_login>/test.conf
On peut donc, après avoir validé que la configuration est bonne, remplacer la configuration actuelle par la nouvalle :
$ cp -i /home/<mon_login>/test.conf /usr/local/nginx/conf/nginx.conf
cp: erase 'nginx.conf' ? yes
$ ./nginx -s reload
1.13 Ajouter Nginx en tant que service système.
Pour plus de facilité, nous allons rendre controllable Nginx comme une commande standard et l’ajouter au demarrage
sytème ainsi qu’à l’arrêt.
Tout d’abord, il faut arrêter le script :
# kill `cat /usr/local/nginx/logs/nginx.pid`
1.13.1 Création du script init pour sysVinit.
# vim /etc/init.d/nginx
Voici ce qu’il faut écrire :
#!/bin/bash
### BEGIN INIT INFO
# Provides:
# Required-Start:
# Require-Stop:
# Default-Start:
# Default-Stop:
# Short-Description:
# Description:
### END INIT INFO
nginx
$all
$all
2 3 4 5
0 1 6
starts the nginx web server
starts nginx using start-stop-daemon
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/nginx/sbin/nginx
NAME=nginx
DESC=nginx
test -x $DAEMON || exit 0
# Include nginx defaults if available
if [ -f /etc/defaults/nginx ] ; then
8
Chapitre 1. Installation
Tuto_Nginx Documentation, Version 0.1
. /etc/defaults/nginx
fi
set -e
. /lib/lsb/init-functions
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/$NAME.pid --exec $D
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/$NAME.pid --exec $DA
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/$NAME.pid --exec $DA
sleep 1
start-stop-daemon --start --quiet --pidfile /usr/local/nginxlogs/$NAME.pid --exec $DA
echo "$NAME."
;;
reload)
echo -n "Reloading $DESC configuration: "
start-stop-daemon --stop --signal HUP --quiet --pidfile /usr/local/nginx/logs/$NAME.p
echo "$NAME."
;;
status)
status_of_proc -p /usr/local/nginx/logs/$NAME.pid "$DAEMON" nginx && exit 0 || exit $
;;
)
*
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|reload|force-reload|status}" >&2
exit 1
;;
esac
exit 0
1.13.2 Création du script de démarrage pour systemd.
# vim /lib/systemd/system/nginx.service
[Unit]
Description=A high performance web server and a reverse proxy server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/local/nginx/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/local/nginx/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
1.13. Ajouter Nginx en tant que service système.
9
Tuto_Nginx Documentation, Version 0.1
[Install]
WantedBy=multi-user.target
On vérifie le bon fonctionnement de notre script :
# systemctl status nginx
nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; disabled)
Active: inactive (dead)
On demarre notre service :
# systemctl start nginx
On vérifie :
# systemctl status nginx
nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; disabled)
Active: active (running) since jeu. 2015-06-18 01:49:54 CEST; 43s ago
Process: 11505 ExecStart=/usr/local/nginx/sbin/nginx -g daemon on; master_process on; (code=exited,
Process: 11504 ExecStartPre=/usr/local/nginx/sbin/nginx -t -q -g daemon on; master_process on; (cod
Main PID: 11508 (nginx)
CGroup: /system.slice/nginx.service
-11508 nginx: master process /usr/local/nginx/sbin/nginx -g daemon on; master_proc
-11509 nginx: worker process
10
Chapitre 1. Installation
CHAPITRE 2
Configuration basique de Nginx
Dans ce chapitre, nous verrons comment créer une configuration minimal pour un serveur web. Nous allons donc
voir la syntaxe utilisée dans le fichier de configuration. Nous allons également essayé de comprendre les différentes
directives qui vont permettre d’optimiser votre serveur web pour le trafique et l’installation du hardware. On va créer
des pages de test pour vérifier que la configuration est bonne.
— Présentation de la syntaxe
— Configuration basique
— Établir une configuration approprié
— Tester un site web
— Tester et maintenir le serveur
2.1 Fichier de configuration.
Le fichier de configuration se trouve à /usr/local/nginx/conf/nginx.conf
Voici le fichier de configuration par défaut :
#user nobody;
worker_processes
1;
#error_log
#error_log
#error_log
logs/error.log;
logs/error.log notice;
logs/error.log info;
#pid
logs/nginx.pid;
events {
worker_connections
}
1024;
http {
include
default_type
#log_format
mime.types;
application/octet-stream;
#
main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access_log
logs/access.log
#
main;
11
Tuto_Nginx Documentation, Version 0.1
sendfile
#tcp_nopush
on;
on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip
on;
server {
listen
server_name
80;
localhost;
#charset koi8-r;
#access_log
logs/host.access.log
location / {
root
index
}
#error_page
main;
html;
index.html index.htm;
404
/404.html;
# redirect server error pages to the static page /50x.html
#
error_page
500 502 503 504 /50x.html;
location = /50x.html {
root
html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#
proxy_pass
http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#
root
html;
#
fastcgi_pass
127.0.0.1:9000;
#
fastcgi_index index.php;
#
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
#
include
fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#
deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#
listen
8000;
12
Chapitre 2. Configuration basique de Nginx
Tuto_Nginx Documentation, Version 0.1
#
#
listen
server_name
#
#
#
#
#}
location / {
root
html;
index index.html index.htm;
}
# HTTPS server
#
#server {
#
listen
#
server_name
somename:8080;
somename alias
another.alias;
443 ssl;
localhost;
#
#
ssl_certificate
ssl_certificate_key
cert.pem;
cert.key;
#
#
ssl_session_cache
ssl_session_timeout
shared:SSL:1m;
5m;
#
#
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
#
#
#
#
#}
location / {
root
html;
index index.html index.htm;
}
}
La seconde ligne worker_processes est un directive, la valeur 1 indique que Nginx travail un seul worker
processus. On voit que la directive finit par un ;
2.2 Organisation et inclusion.
Ligne 16, on peut voir la directive include.
include mime.types;
Comme son nom l’indique, cette directive va permettre d’inclure un fichier spécifique. Voici un petit exemple pour
comprendre :
nginx.conf:
user nginx nginx;
worker_processes 4;
include other_settings.conf;
other_settings.conf:
error_log logs/error.log;
pid logs/nginx.pid;
Ce que Nginx va interpréter :
2.2. Organisation et inclusion.
13
Tuto_Nginx Documentation, Version 0.1
user nginx nginx;
worker_processes 4;
error_log logs/error.log;
pid logs/nginx.pid;
Par défaut, l’insertion de sites ce fait de cette manière. On va utiliser la directive <mon_site>.conf ou :
include sites/*.conf;
2.3 Les directives en bloque.
On peut voir également dans le fichier par défaut, la directive events, celle-ci se présente en bloque :
events {
worker_connections 1024;
}
Ce bloque est définie par le module events. La directive worker_connections peut seulement être utilisé dans
le bloque events.
On peut également imbriquer des bloques les uns dans les autres :
http {
server {
listen 80;
server_name exemple.fr;
acces_log /var/log/nginx/exemple.fr.log;
location ^~ /admin/ {
index index.php;
}
}
}
Dans le bloque http, on peut déclarer plusieurs bloque server. Ces bloques server permettent de configurer des
hôtes virtuelles. Nous verrons au fur et à mesure l’utilisation des bloques.
2.4 Les directives des modules noyau.
Nous allons voir quelques modules qui vont permettre de paramétrer le noyau. Ces modules ne peuvent être utilisés
qu’une seule fois, et doivent être placé dans la racine du fichier de configuration.
14
Chapitre 2. Configuration basique de Nginx
Tuto_Nginx Documentation, Version 0.1
Nom et contexte
daemon
debug_points
env
Syntaxe et description
Valeurs acceptées : on ou off
Syntaxe : daemon on ;
Valeur par défaut on ;
Active ou désactive le mode daemon. Si on le désactive,
le programme ne démarrera pas en arrière plan ; Il restera au premier plan lorsqu’il sera lancé depuis le shell.
Peut-être utile pour débbuguer.
Valeurs acceptés : stop ou abort
Syntaxe : debug_points stop ;
Valeur par défaut : None
Active un point de débbuguage.Il suffit d’utiliser stop
pour interrompre l’application. Utiliser abort pour arrêter le point de débbuguage et fichier core dump. Pour
désactiver cette option, ne tout simplement pas utiliser
cette directive.
Syntaxe : env MY_VARIABLE ;
env MY_VARIABLE=my_value ;
error_log
Contexte : main, http, server, et location
Permet de (re)définir une variable d’environnement.
Syntaxe : error_log /file/path level ;
Valeur par défaut : logs/error.log error.
Où level est une des valeurs suivantes : debug, info,
notice, warn, error, et crit (du plus au moins détaillé :
debug fourni les messages de logs fréquents, crit seulement les messages critiques).
Active les messages d’erreur sur plusieurs niveaux :
Application, HTTP serveur, hôte virtuel, et dossier de
l’hôte virtuel.
En redirigeant la sortie des logs vers /dev/null/, on peut
désactiver les logs d’erreurs. En utilisant la directive suivante depuis la racine du fichier de configuration :
error_log /dev/null crit;
lock_file
Syntaxe : File Path
lock_file logs/nginx.lock;
log_not_found
Contexte : main, http, server, et location
master_process
Valeur par défaut : Définie au moment de la compilation.
Sur la plupart des OS cette directive est ignorée.
Valeurs acceptées : on ou off
log_not_found on;
Valeur par défaut : on
Active ou désactive les logs pour les erreurs HTTP “404
not found”. Si les logs sont remplis avec des 404 à cause
des favicon.ico ou robots.txt, on peut mettre à off.
Valeurs acceptées : on ou off
master_process on;
Valeur par défaut : on
Si activé, Nginx va démarrer plusieurs processus : un
principal (le processus maître) et le processus worker.
Si désactivé, Nginx travail avec un processus unique.
Reste page 48 à 51 de pcre_jit à
worker_aio_requests
2.4. Les directives des modules noyau.
15
Tuto_Nginx Documentation, Version 0.1
2.5 Les modules d’évenements.
Les modules d’évènement vient avec des directives qui permet de configurer les mécanismes de réseau. Certains
paramètres ont une impacte importante sur les performances.
Toutes les directives de la liste suivante, doivent être placé dans le bloque events, qui doit être placé à la racine du
fichier de configuration :
user nginx nginx;
master_process on;
worker_processes 4;
events {
worker_connections 1024;
use epoll;
}
[...]
Nom et contexte
Syntaxe et description
Reste page 52 à 53 de accept_mutex à worker_connections
2.6 Les modules de configuration.
Le module de configuration permet l’insertion de fichier grâce à la directive include. Cette directive peut être inséré
n’importe où dans le fichier de configuration et accepte un seul paramètre - le chemin du fichier.
include /file/path.conf;
include sites/*.conf;
Note : Si aucun chemin absolue n’est défini,le chemin est relatif au dossier de configuration. Par défaut, include
sites/exemple.conf va insérer le fichier : /usr/local/nginx/conf/sites/exemple.conf.
2.7 Travailler sur la configuration par défaut.
2.7.1 User
Par défaut :
#user nobody;
A changer par :
user www-data www-data
2.7.2 Worker_processes
Par défaut :
worker_processes 1;
A changer par :
16
Chapitre 2. Configuration basique de Nginx
Tuto_Nginx Documentation, Version 0.1
worker_processes 4;
Permet d’utiliser les 4 cœurs de notre machine. A adapter suivant notre machine.
2.7.3 Log_not_found
Permet de logger les erreurs 404 ou non. Il est fortement recommandé de le laisser à on
log_not_found on;
2.7.4 Worker_connections
Cette directive permet de définir le nombre de connections admises par le serveur. Il est en relation avec le worker_processes, 1 worker permet 1024 connections.
2.8 Les tests de perforance.
Nous allons utiliser 3 outils pour tester les performances de notre serveur :
— httperf
— Autobench
— OpenWebLoad
Ces outils vont permettre de générer de multiples requêtes HTTP pour étudier les résultats.
2.8.1 Httperf
Httperf s’utilise en ligne de commande, on peut le trouver généralement dans les dépôts des distributions. Voici un
exemple de commande :
$ httperf --server 192.168.56.101 --port 80 --uri /index.html --rate 300 --num-conn 30000 --num-call
Voici à quoi correspond les différentes options :
— –server : Le site que l’on veut tester
— –uri : le chemin du fichier qui sera téléchargé
— –rate : Combien de requêtes par seconde
— –num-conn : le nombre de connections
— –num-call :combien de requêtes envoyées par connections
— –timeout nombre de seconde avant de considérer une requête perdu
2.8. Les tests de perforance.
17
Tuto_Nginx Documentation, Version 0.1
18
Chapitre 2. Configuration basique de Nginx
CHAPITRE 3
Indices and tables
— genindex
— modindex
— search
19

Documents pareils