Nginx est un serveur web qui a été lancé en 2004. Ce serveur est facile à utiliser, mais malgré cela, il gère parfaitement un grand nombre de connexions. Cette caractéristique est due à son architecture interne. À l'origine, il a été conçu comme un serveur exécutant du contenu statique (ce qu'on appelle un serveur cache). Contrairement à Apache, Nginx ne dispose pas d'un interpréteur intégré pour gérer les demandes de contenu dynamique.
Cela nécessite une interaction supplémentaire entre le serveur web et l'application. Le gestionnaire de processus PHP-FPM (FastCGI) résout ce problème avec succès. Le point important est qu'en travaillant avec PHP, le liant Nginx + PHP-FPM se révèle moins productif qu'Apache + php_mod.
Par conséquent, si votre serveur a des exigences de performance élevées pour PHP, il est préférable de considérer le bundle apache + php_mod. Un autre point important est que la configuration de Nginx demande plus d'efforts que celle d'Apache.
Cet article traite de l'installation et de la configuration simple du serveur Nginx en conjonction avec le gestionnaire de processus PHP-FPM dans Debian 8. Toutes les opérations sont effectuées sous les privilèges de l'utilisateur root.
Tout d'abord, vous devez effectuer une mise à jour :
apt-get update
Ensuite, nous installons Nginx :
apt-get -y install nginx
Après l'installation, nous allons tester le serveur. Pour ce faire, il suffit d'ouvrir l'adresse du navigateur web de notre serveur. Le contenu suivant sera ouvert :

Il s'agit de la page standard du plug-in pour Nginx. L'étape suivante consiste à installer php5-fpm. C'est très simple :
apt-get -y install php5-fpm
Ensuite, vous devez procéder à l'installation. Tout d'abord, configurez le serveur Nginx. Le fichier de configuration se trouve dans le répertoire /etc/nginx/nginx.conf.
Ouvrez ce fichier. Nous utilisons l'éditeur de texte vi, mais vous pouvez utiliser tout autre éditeur qui vous convient.
vi /etc/nginx/nginx.conf
Comprenons un peu la structure du fichier lui-même. L'ensemble du fichier est quelque peu similaire au code du programme. Il contient des directives. Elles sont divisées en deux types :
- Simple - une chaîne de caractères avec des opérateurs se terminant par le symbole " ;". Par exemple : pid /run/nginx.pid ;
- Block - une directive contenant des paramètres supplémentaires placés entre crochets {}.
D'autres directives peuvent être placées entre accolades. Dans ce cas, on parlera de contexte, et toutes les directives qui se trouvent dans le fichier de configuration mais qui ne sont pas placées entre crochets sont dans le contexte global ou le contexte dit principal.
Les chaînes marquées du symbole # sont des commentaires et ne sont pas prises en compte dans la configuration.
Comme vous pouvez le voir, le fichier contient une directive :
include /etc/nginx/sites-enabled/*;
Cette directive indique que ce fichier de configuration inclut tous les fichiers de configuration du répertoire /etc/nginx/sites-enabled/directory. Ce répertoire contient essentiellement des liens symboliques vers la configuration des hôtes virtuels (essentiellement les sites servis sur le serveur).
Nous devons maintenant configurer un hôte virtuel qui sera responsable de notre ressource la plus simple (test.net). Tout d'abord, nous allons lui créer un répertoire. Faisons en sorte qu'il s'agisse d'une commande :
mkdir -p /var/www/test.net/html
Maintenant, créons un fichier index.html dans ce répertoire avec le contenu suivant :
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h>This is a test page.</h>
</body>
</html>
Maintenant, nous avons le contenu du site, et une page de tout. Pour ce site, vous devez créer un hôte virtuel. Copiez le fichier par défaut de l'hôte virtuel :
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/test.net
Ensuite, ouvrez-le pour l'éditer. La directive listen a des options pour default_server. Un seul bloc peut être défini avec cette valeur, ce qui signifie que ce bloc servira les requêtes pour lesquelles rien de plus approprié n'est trouvé. Par conséquent, les lignes
listen 80 default_server; listen [::]:80 default_server;
vous devez les supprimer de ce fichier. Ensuite, il faut configurer le répertoire racine qui contient le contenu de notre site. Pour ce faire, nous écrivons la directive root comme suit :
root /var/www/test.net/html;
La directive index suivante définit les fichiers à utiliser comme fichiers d'index. L'ordre de vérification des fichiers correspond à l'ordre du fichier de configuration. Cette directive s'écrit comme suit :
index index.html index.htm index.nginx-debian.html;
La directive server_name suivante spécifie le nom du serveur. Comme valeurs, nous spécifions le nom de domaine et l'alias lorsque le nom de domaine est spécifié avec le préfixe www.
server_name test.net www.test.net;
Ensuite, il suffit de spécifier une directive location qui définit la configuration du site en fonction du nom de l'URI spécifié dans la requête. Dans notre cas, elle sera simple :
location / {
try_files $uri $uri/ =404;
}
Cela signifie que les fichiers seront d'abord vérifiés, puis les répertoires, et si rien de convenable n'est trouvé, le site renverra un message "Not Found" (404).
Tout cela se passe dans le fichier de configuration. Son contenu final est le suivant :
#cat /etc/nginx/sites-available/test.net
server {
root /var/www/test.net/html;
index index.html index.htm index.nginx-debian.html;
server_name test.net www.test.net;
location / {
try_files $uri $uri/ =404;
}
}
Toutes les autres directives et leurs valeurs peuvent être lues dans la documentation officielle de Nginx, qui est ici http://nginx.org/en/docs/.
Nous avons maintenant le contenu du site et son fichier de configuration. Il reste à l'inclure. Pour cela, créez un lien symbolique :
ln -s /etc/nginx/sites-available/test.net /etc/nginx/sites-enabled/
Redémarrez le serveur pour que les modifications soient effectives :
/etc/init.d/nginx restart
Vérifions le fonctionnement de la ressource créée.

Pour ouvrir une page, il peut être nécessaire d'ajouter une ligne au fichier hosts de l'ordinateur à partir duquel vous vérifiez :
xxx.xxx.xxx.xxx test.net
Где xxx.xxx.xxx.xxx - это IP-адрес сервера с установленным Nginx. Файл hosts, находится :
- C:\NWindows\NSystem32\Ndrivers\etc (в Win7) ;
- /etc/hosts (в Debian).
Nous avons installé Nginx et php5-fpm et créé le site le plus simple. L'étape suivante consiste à configurer PHP et à l'appliquer à Nginx.
Tout d'abord, nous allons créer une page avec du code PHP sur notre hôte virtuel. Créons le fichier /var/www/test.net/html/info.php comme suit :
<?php phpinfo(); ?>
Ouvrons maintenant cette page dans le navigateur http://test.net/info.php
Mais qu'en est-il de l'exécution du code PHP ? Un code PHP que nous n'avons pas exécuté car l'interpréteur PHP n'est pas configuré dans Nginx. C'est ce que nous allons faire.
Ouvrez notre fichier de configuration /etc/nginx/sites-available/test.net. Ajoutez la directive block suivante :
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Cette directive décrit les paramètres de traitement des requêtes vers les fichiers PHP. Je ne décrirai pas chaque paramètre et sa valeur. Ces informations peuvent être trouvées dans la documentation officielle ici http://nginx.org/en/docs/dirindex.html
Notre fichier de configuration est maintenant le suivant :
server {
root /var/www/test.net/html;
index index.html index.htm index.nginx-debian.html;
server_name test.net www.test.net;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Sauvegardez les modifications apportées au fichier et redémarrez notre serveur Nginx.
/etc/init.d/nginx restart
Essayons à nouveau d'ouvrir http://test.net/info.php. Le résultat devrait être le suivant :

J'ai marqué les informations dans la capture d'écran qui indiquent l'utilisation du gestionnaire FPM.
En effet, la configuration la plus simple du serveur Nginx + PHP-FPM est terminée. Le site le plus simple est créé et configuré pour fonctionner avec PHP.
Voir l'article suivant sur la configuration de PHP-FPM.