Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
logiciel:internet:nginx:start [2019/08/08 13:04]
admin
logiciel:internet:nginx:start [2019/10/22 18:34] (Version actuelle)
admin
Ligne 3: Ligne 3:
 ====== Nginx : le serveur Web hautes performances (LEMP) ====== ====== Nginx : le serveur Web hautes performances (LEMP) ======
  
-====== - Introduction ​======+===== - Introduction =====
  
-Nginx (« engine X ») est un serveur ​web et proxy inverse haute performance créé par Igor Sysoev. +Nginx (« engine X ») est un serveur ​Web, similaire à Apache, qui peut être utilisé : 
- +  * comme serveur web autonome
-Il peut être utilisé : +
-  * en tant que serveur web autonome+
   * ou comme proxy pour réduire la charge de serveurs HTTP ou de courrier électronique en arrière-plan.   * ou comme proxy pour réduire la charge de serveurs HTTP ou de courrier électronique en arrière-plan.
  
-C'est un paquet ​de dépendances avec trois versions : nginx-full (par défaut), ​nginx-light ou nginx-extras. +Le paquet ​trois versions : 
- +  * nginx-full (par défaut), avec l’ensemble de modules standard sauf ceux qui sont dans nginx-extra 
-**Nginx-full** : +  * nginx-light 
- +  * et nginx-extras.
-Ce paquet fournit une version de nginx avec l’ensemble de modules standard ​(sauf ceux qui sont dans nginx-extra). +
- +
-  * MODULES HTTP STANDARD : Core, Access, Auth Basic, Auto Index, Browser, Empty GIF, FastCGI, Geo, Limit Connections,​ Limit Requests, Map, Memcached, Proxy, Referer, Rewrite, SCGI, Split Clients, UWSGI. +
-  * MODULES HTTP FACULTATIFS : Addition, Auth Request, Charset, WebDAV, GeoIP, Gunzip, Gzip, Gzip Precompression,​ Headers, HTTP/2, Image Filter, Index, Log, Real IP, Slice, SSI, SSL, Stream, SSL Preread, Stub Status, Substitution,​ Thread ​ Pool, Upstream, User ID, XSLT. +
-  * MODULES DE COURRIER : Mail Core, Auth HTTP, Proxy, SSL, IMAP, POP3, SMTP. +
-  * MODULES DE TIERS : Auth PAM, DAV Ext, Echo, HTTP Substitutions,​ Upstream Fair Queue.+
  
-**nginx** ​fonctionne avec un processus maître ​qui gère plusieurs processus de travail qui effectuent ​le traitement réel des demandes.+Fonctionnement de **nginx** ​un processus maître gère plusieurs processus de travail qui font le traitement réel des demandes.
  
-Le fichier de configuration ​s'​appelle ​**/​etc/​nginx/​nginx.conf**.+Le fichier de configuration ​est **/​etc/​nginx/​nginx.conf**.
  
 Voir le guide du débutant : [[logiciel:​internet:​nginx:​debutant|]] Voir le guide du débutant : [[logiciel:​internet:​nginx:​debutant|]]
-====== - Pré-requis ====== 
  
-===== - Définir l'​emplacement du répertoire de base du serveur ​=====+===== - Pré-requis ===== 
 + 
 +==== - Définir l'​emplacement du répertoire de base du serveur ====
  
 <WRAP center round tip 60%> <WRAP center round tip 60%>
Ligne 72: Ligne 65:
 La racine du site est désormais **/​var/​www/​html -> /​[DISQUE]/​srv/​www/​html**,​ accessible au choix par **/​var/​www/​html** ou **/​[DISQUE]/​srv/​www/​html**. La racine du site est désormais **/​var/​www/​html -> /​[DISQUE]/​srv/​www/​html**,​ accessible au choix par **/​var/​www/​html** ou **/​[DISQUE]/​srv/​www/​html**.
  
-====== - Installation ​======+===== - Installation =====
  
-Ajoutez ​le ppa stable ​:<​cli>​$ sudo add-apt-repository ppa:​nginx/​stable +Installez ​le paquet **[[apt>​nginx,​php-xml]]** ou en ligne de commande ​:<​cli>​$ sudo apt install nginx php-xml</​cli>​
-$ sudo apt update</​cli>​+
  
-Recherchez la dernière version de Nginx proposée : +==== Configuration du pare-feu pour Nginx ====
-<​cli>​$ sudo apt-cache policy nginx +
-[sudo] Mot de passe de ... :  +
-nginx: +
-  Installé :​ (aucun) +
-  Candidat : 1.14.0-0ubuntu1.2 +
- Table de version :​ +
-     ​1.14.0-0ubuntu1.2 500 +
-        500 http://​fr.archive.ubuntu.com/​ubuntu bionic-updates/​main amd64 Packages +
-        500 http://​fr.archive.ubuntu.com/​ubuntu bionic-updates/​main i386 Packages +
-        500 http://​security.ubuntu.com/​ubuntu bionic-security/​main amd64 Packages +
-        500 http://​security.ubuntu.com/​ubuntu bionic-security/​main i386 Packages +
-     ​1.14.0-0ubuntu1 500 +
-        500 http://​fr.archive.ubuntu.com/​ubuntu bionic/main amd64 Packages +
-        500 http://​fr.archive.ubuntu.com/​ubuntu bionic/main i386 Packages +
-$ </​cli> ​+
  
-Installez le paquet **[[apt>​nginx,php-xml]]** ou en ligne de commande :<​cli>​$ sudo apt install nginx php-xml</​cli>​+En s'​installantNginx s’enregistre auprès ​de UFW en tant que service.
  
-Vérification ​: en ouvrant [[http://​localhost]],​ il s'​affiche :{{ :​logiciel:​internet:​nginx:​nginx_01.png |}}+Nginx est donc autorisé à travailler sur le serveur sans problème. 
 + 
 +Voyons maintenant la liste des services autorisés par le pare-feu, avec la commande :<​cli>​$ sudo ufw app list  
 +Applications disponibles : 
 +... 
 +  Nginx Full 
 +  Nginx HTTP 
 +  Nginx HTTPS 
 +... 
 +</​cli>​ 
 + 
 +Vous voyez trois profils pour Nginx : 
 +  * Nginx Full : Ce profil autorise Nginx sur le port 80 et sur le port 443. Ici, le port 80 n'est pas crypté et le port 443 est crypté. 
 +  * Nginx HTTP : Ce profil n'​autorise Nginx que sur le port 80 (non chiffré). 
 +  * Nginx HTTPS : Ce profil autorise Nginx sur le port 443 (chiffré). 
 + 
 +Maintenant, nous installons seulement Nginx sur le serveur et nous n’avons aucun site Web : il n’a donc pas besoin de SSL. 
 + 
 +Nous avons donc seulement besoin d'​autoriser le trafic http, avec la commande :<​cli>​$ sudo ufw allow 'Nginx HTTP'</​cli>​ 
 + 
 +Et l'​état de ufw est :<​cli>​$ sudo ufw status 
 +  
 +Status: active 
 +  
 +To                         ​Action ​     From 
 +--                         ​------ ​     ---- 
 +... 
 +Nginx HTTP                 ​ALLOW ​      ​Anywhere 
 +... 
 +Nginx HTTP (v6)            ALLOW       ​Anywhere (v6)</​cli>​ 
 + 
 +==== - Test du du serveur Web ==== 
 + 
 +Utilisez systemctl pour vérifier le statut :<​cli>​$ systemctl status nginx 
 +● nginx.service - A high performance web server and a reverse proxy server 
 +   ​Loaded:​ loaded (/​lib/​systemd/​system/​nginx.service;​ enabled; vendor preset: en 
 +   ​Active:​ active (running) since Mon 2019-09-16 07:45:43 CEST; 7h ago 
 +     Docs: man:​nginx(8) 
 + Main PID: 1485 (nginx) 
 +    Tasks: 5 (limit: 4915) 
 +   ​CGroup:​ /​system.slice/​nginx.service 
 +           ​├─1485 nginx: master process /​usr/​sbin/​nginx -g daemon on; master_pro 
 +           ​├─1486 nginx: worker process 
 +           ​├─1487 nginx: worker process 
 +           ​├─1488 nginx: worker process 
 +           ​└─1489 nginx: worker process 
 +... 
 +</​cli>​Le statut actif indique que le service fonctionne correctement. 
 + 
 +Une autre méthode : 
 +En ouvrant [[http://​localhost]],​ il s'​affiche :{{ :​logiciel:​internet:​nginx:​nginx_01.png |}}
  
 <WRAP center round info 60%> <WRAP center round info 60%>
Ligne 105: Ligne 132:
 N'​oubliez pas de recharger la page du navigateur pour vider le cache, sinon c'est l'​ancienne page qui s'​affiche. N'​oubliez pas de recharger la page du navigateur pour vider le cache, sinon c'est l'​ancienne page qui s'​affiche.
 </​WRAP>​ </​WRAP>​
-====== - Configuration ​======+ 
 +===== - Configuration =====
  
 L'​installation a créé l'​arborescence : L'​installation a créé l'​arborescence :
 <a2s> <a2s>
 /etc/nginx/ /etc/nginx/
-|    ​nginx.conf+|    nginx.conf 
 +|
 +-- conf.d/ +-- conf.d/
 +-- modules-available/​ +-- modules-available/​
 +-- modules-enabled/​ +-- modules-enabled/​
 +-- sites-available/​ +-- sites-available/​
-   ​* ​default+       default 
 +|
 +-- sites-enabled/​ +-- sites-enabled/​
 +-- snippets/ +-- snippets/
 </​a2s>​ </​a2s>​
  
-Le fichier de configuration ​((qui pilote le fonctionnement de **nginx** et de ses modules)) ​de **nginx** est **/​etc/​nginx/​nginx.conf**.+Le fichier de configuration de **nginx** est **/​etc/​nginx/​nginx.conf**.
  
-===== - Structure du fichier de configuration =====+==== - Structure du fichier de configuration ==== 
 + 
 +Voir [[logiciel:​internet:​nginx:​nginx.conf|]]
  
 <WRAP center round info 60%> <WRAP center round info 60%>
-**nginx** est constitué de modules contrôlés par les directives spécifiées dans le fichier de configuration. 
  
-Les directives sont divisées en directives simples et en blocs de directives. 
- 
-Une directive simple consiste en un nom et des paramètres séparés par des espaces et se termine par un point-virgule (;). 
- 
-Un bloc de directives a la même structure qu'une directive simple, mais au lieu du point-virgule,​ il se termine par un ensemble d'​instructions supplémentaires entourées d'​accolades **({** et **})**. 
- 
-Si un bloc de directives peut avoir d'​autres directives entre accolades, cela s'​appelle un contexte (exemples: events, http, server et location). 
- 
-Les directives placées dans le fichier de configuration en dehors de tout contexte sont considérées comme étant dans le contexte principal. 
- 
-Les événements et les directives //http// sont dans le //contexte principal//,​ le //serveur// dans //http// et //​location//​ dans //server//. 
- 
-Le reste de la ligne après le signe # est un commentaire. 
  
 Pour en savoir plus sur le fichier de configuration,​ voir [[logiciel:​internet:​nginx:​nginx.conf|]] Pour en savoir plus sur le fichier de configuration,​ voir [[logiciel:​internet:​nginx:​nginx.conf|]]
Ligne 150: Ligne 168:
   * Pour les hôtes virtuels, des fichiers spécifiques stockés dans le répertoire **/​etc/​nginx/​sites-available** ;\\ ce répertoire contient un fichier modèle : **/​etc/​nginx/​sites-available/​default**   * Pour les hôtes virtuels, des fichiers spécifiques stockés dans le répertoire **/​etc/​nginx/​sites-available** ;\\ ce répertoire contient un fichier modèle : **/​etc/​nginx/​sites-available/​default**
   * Le dossier **/​etc/​nginx/​sites-enabled** permet de lancer les hôtes virtuels en production   * Le dossier **/​etc/​nginx/​sites-enabled** permet de lancer les hôtes virtuels en production
-</​WRAP>​ 
- 
-<WRAP center round info 60%> 
-__**Héritage**__ 
- 
-Un contexte fils (contenu dans un autre contexte, son parent) hérite des paramètres des directives du parent. 
- 
-Si une directive apparaît dans plusieurs contextes, le paramètre hérité du parent est remplacé par la directive du contexte enfant. 
- 
-Par exemple, la directive **proxy_set_header**. 
 </​WRAP>​ </​WRAP>​
  
 La configuration de Nginx en serveur Web définit les URL qu'il gère et comment il traite les requêtes HTTP pour ces URL. La configuration de Nginx en serveur Web définit les URL qu'il gère et comment il traite les requêtes HTTP pour ces URL.
  
-==== - Utilisation de variables ==== +==== - Configuration de Nginx en serveur Web ====
- +
-Vous pouvez utiliser des variables. +
- +
-Le nom d'une variable commence par le caractère $ (dollar). +
- +
-Des variables sont prédéfinies,​ et vous pouvez définir des variables personnalisées à l'aide des directives **set**, **map** et **geo**. +
- +
-Par exemple, **$remote_addr** contient l'​adresse IP du client et **$uri** contient la valeur actuelle de l'​URI. +
- +
-==== - Directive location : configuration des emplacements ==== +
- +
-Dans chaque bloc **location**,​ on peut placer d'​autres directives **location**. +
- +
-Une directive **location** a deux types de paramètres : +
-  * les chaînes de préfixe (chemins) +
-  * et les expressions régulières. +
- +
-Le paramètre **pathname** de l'​exemple suivant correspond aux requêtes qui commencent par **/​some/​path/​**,​ comme **/​some/​path/​document.html**,​ mais pas à /​my-site/​some/​path car /some/path n'est pas au début de cet URI.) +
-<code nginx > +
-location /some/path/ { +
-    ... +
-+
-</​code>​ +
- +
-Une expression régulière est précédée du tilde (~) pour une correspondance sensible à la casse, ou du tilde-astérisque (~*) pour une correspondance insensible à la casse. L'​exemple suivant correspond aux URI qui incluent la chaîne .html ou .htm à n'​importe quelle position. +
-<code nginx  > +
-location ~ \.html? { +
-    ... +
-+
-</​code>​ +
- +
-Un contexte **location** peut contenir des directives qui définissent la façon de résoudre une requête - servir un fichier statique ou transmettre la requête à un serveur proxy. +
- +
-Dans l'​exemple suivant, les demandes qui correspondent au premier contexte **location** sont des fichiers servis depuis le répertoire /**data** et les requêtes correspondant au second sont transmises au serveur proxy qui héberge le contenu du domaine **www.example.com**. +
- +
-<code nginx > +
-server { +
-    location /images/ { +
-        root /data; +
-    } +
- +
-    location / { +
-        proxy_pass http://​www.example.com;​ +
-    } +
-+
-</​code>​ +
- +
-La directive **root** spécifie le chemin du système de fichiers où rechercher les fichiers statiques à servir. +
- +
-L'URI de la demande associée à l'​emplacement est ajoutée au chemin pour obtenir le nom complet du fichier statique à servir. +
- +
-Dans l'​exemple ci-dessus, en réponse à une demande de **/​images/​example.png**,​ NGginx fournit le fichier **/​data/​images/​example.png**. +
- +
-La directive **proxy_pass** transmet la requête au serveur proxy accédé avec l'URL configurée. +
- +
-La réponse du serveur proxy est ensuite renvoyée au client. +
- +
-Dans l'​exemple ci-dessus, toutes les demandes avec des URI qui ne commencent pas par /images/ sont transmises au serveur proxy. +
- +
-===== - Configuration de Nginx en serveur Web ====+
- +
-==== - Renvoyer des codes d'​état spécifiques ==== +
- +
-Certains URI de site Web exigent le retour immédiat d'une réponse avec une erreur spécifique ou un code de redirection,​ par exemple lorsqu'​une page a été déplacée temporairement ou définitivement. +
- +
-La méthode la plus simple consiste à utiliser la directive **return**. Par exemple : +
- +
-<code - > +
-location /wrong/url { +
-    return 404; +
-+
-</​code>​ +
- +
-Le premier paramètre de retour est un code de réponse. +
- +
-Le deuxième paramètre facultatif peut être l'URL d'une redirection (pour les codes 301, 302, 303 et 307) ou le texte à renvoyer dans le corps de la réponse. Par exemple : +
- +
-<code - > +
-location /​permanently/​moved/​url { +
-    return 301 http://​www.example.com/​moved/​here;​ +
-+
-</​code>​ +
- +
-La directive **return** peut être incluse dans les contextes **location** et **server**. +
- +
-==== - Réécriture d'URI dans les demandes ==== +
- +
-Une URI de requête peut être modifiée plusieurs fois lors du traitement de la demande grâce à l'​utilisation de la directive rewrite, qui a un paramètre facultatif et deux paramètres obligatoires. +
- +
-Le premier paramètre (obligatoire) est l'​expression régulière à laquelle l'URI de la requête doit correspondre. +
- +
-Le second paramètre est l'URI à substituer à l'URI correspondant. +
- +
-Le troisième paramètre facultatif est un indicateur qui peut interrompre le traitement d'​autres directives de réécriture ou envoyer une redirection (code 301 ou 302). Par exemple : +
- +
-<code - > +
-location /users/ { +
-    rewrite ^/​users/​(.*)$ /​show?​user=$1 break; +
-+
-</​code>​ +
- +
-Comme le montre cet exemple, le deuxième paramètre users capture en faisant correspondre les expressions régulières. +
- +
-Vous pouvez inclure plusieurs directives **rewrite** dans les contextes **server** et **location**. +
- +
-Nginx exécute les directives une par une dans l'​ordre où elles apparaissent. +
- +
-Les directives **rewrite** dans un contexte server sont exécutées une fois lorsque ce contexte est sélectionné. +
- +
-Une fois que Nginx a traité un ensemble d'​instructions de réécriture,​ il sélectionne un contexte d'​emplacement en fonction du nouvel URI. +
- +
-Si l'​emplacement sélectionné contient des directives de réécriture,​ elles sont exécutées à tour de rôle. +
- +
-Si l'URI correspond à l'un de ceux-ci, une recherche du nouvel emplacement démarre après le traitement de toutes les directives de réécriture définies. +
- +
-L'​exemple suivant montre les directives de réécriture en combinaison avec une directive **return**. +
- +
-<code - > +
-server { +
-    ... +
-    rewrite ^(/​download/​.*)/​media/​(.*)\..*$ $1/​mp3/​$2.mp3 last; +
-    rewrite ^(/​download/​.*)/​audio/​(.*)\..*$ $1/​mp3/​$2.ra ​ last; +
-    return ​ 403; +
-    ... +
-+
-</​code>​ +
- +
-Cet exemple de configuration distingue deux ensembles d'​URI. +
- +
-Les URI tels que **/​download/​some/​media/​file** sont remplacés par **/​download/​some/​mp3/​file.mp3**. +
- +
-En raison du dernier indicateur, les directives suivantes (la seconde réécriture et la directive return) sont ignorées mais Nginx continue à traiter la demande, qui a maintenant un URI différent. +
- +
-De même, les URI tels que /​download/​some/​audio/​file sont remplacés par /​download/​some/​mp3/​file.ra. +
- +
-Si un URI ne correspond à aucune directive rewrite, Nginx renvoie le code d'​erreur 403 au client. +
- +
-Deux paramètres interrompent le traitement des directives de réécriture:​ +
-  ? last +
-  : Arrête l'​exécution des directives de réécriture dans le contexte actuel server ou location, mais Nginx recherche les emplacements correspondant à l'URI réécrit et toutes les directives de réécriture dans le nouvel emplacement sont appliquées (ce qui signifie que l'URI peut être modifiée). +
-  ? break +
-  : Comme la directive break, arrête le traitement des directives de réécriture dans le contexte actuel et annule la recherche des emplacements correspondant au nouvel URI. Les directives de réécriture dans le nouvel emplacement ne sont pas exécutées. +
- +
-==== - Réécriture des réponses HTTP ==== +
- +
-Parfois, vous devez réécrire ou modifier le contenu d'une réponse HTTP, en substituant une chaîne à une autre. +
- +
-Vous pouvez utiliser la directive **sub_filter** pour définir la réécriture à appliquer. +
- +
-La directive prend en charge les variables et les chaînes de substitutions,​ ce qui permet des changements plus complexes. +
- +
-Par exemple, vous pouvez modifier les liens absolus qui se réfèrent à un serveur autre que le proxy : +
- +
-<code - > +
-location / { +
-    sub_filter ​     /blog/ /​blog-staging/;​ +
-    sub_filter_once off; +
-+
-</​code>​ +
- +
-Un autre exemple modifie la méthode de http:// en http_s_:// et remplace l'​adresse localhost par le nom d'​hôte dans le champ d'​en-tête de la requête. +
- +
-La directive **sub_filter_once** demande à Nginx d'​appliquer consécutivement les directives sub_filter dans un emplacement:​ +
- +
-<code - > +
-location / { +
-    sub_filter ​    '​href="​http://​127.0.0.1:​8080/' ​   '​href="​https://​$host/';​ +
-    sub_filter ​    '​img src="​http://​127.0.0.1:​8080/'​ 'img src="​https://​$host/';​ +
-    sub_filter_once on; +
-+
-</​code>​ +
- +
-Notez que la partie de la réponse déjà modifiée avec le sub_filter ne sera pas remplacée à nouveau si une autre correspondance sub_filter se produit.+
  
-==== - Gestion d'​erreurs ​====+=== - Gestion d'​erreurs ===
  
 Avec la directive **error_page**,​ vous pouvez configurer Nginx pour renvoyer une page personnalisée avec un code d'​erreur,​ remplacer un code d'​erreur différent dans la réponse ou rediriger le navigateur vers un autre URI. Avec la directive **error_page**,​ vous pouvez configurer Nginx pour renvoyer une page personnalisée avec un code d'​erreur,​ remplacer un code d'​erreur différent dans la réponse ou rediriger le navigateur vers un autre URI.
Ligne 401: Ligne 236:
 Ce n'est pas nécessaire ici car les fichiers manquants sont correctement gérés. Ce n'est pas nécessaire ici car les fichiers manquants sont correctement gérés.
  
-===== - Servir le contenu statique ​=====+==== - Servir le contenu statique ====
  
 Cette section décrit comment configurer Nginx pour servir du contenu statique, comment définir les chemins recherchés pour trouver les fichiers demandés, comment configurer les fichiers d'​index et comment régler Nginx ainsi que le noyau, pour une performance optimale. Cette section décrit comment configurer Nginx pour servir du contenu statique, comment définir les chemins recherchés pour trouver les fichiers demandés, comment configurer les fichiers d'​index et comment régler Nginx ainsi que le noyau, pour une performance optimale.
Ligne 484: Ligne 319:
 Si quelque chose ne fonctionne pas comme prévu, recherchez la cause dans les fichiers access.log et error.log du répertoire /​usr/​local/​nginx/​logs ou /​var/​log/​nginx. Si quelque chose ne fonctionne pas comme prévu, recherchez la cause dans les fichiers access.log et error.log du répertoire /​usr/​local/​nginx/​logs ou /​var/​log/​nginx.
  
-==== - Répertoire racine et fichiers d'​index ​====+=== - Répertoire racine et fichiers d'​index ===
  
 La directive **root** spécifie le répertoire racine qui sera utilisé pour rechercher un fichier. La directive **root** spécifie le répertoire racine qui sera utilisé pour rechercher un fichier.
Ligne 562: Ligne 397:
 Par conséquent,​ la demande est envoyée par proxy. Par conséquent,​ la demande est envoyée par proxy.
  
-==== - Essayer plusieurs options ​====+=== - Essayer plusieurs options ===
  
 La directive **try_files** vérifie si le fichier ou le répertoire spécifié existe ; Nginx effectue une redirection interne si c'est le cas, ou renvoie un code d'​état si ce n'est pas le cas. La directive **try_files** vérifie si le fichier ou le répertoire spécifié existe ; Nginx effectue une redirection interne si c'est le cas, ou renvoie un code d'​état si ce n'est pas le cas.
Ligne 606: Ligne 441:
 Pour plus d'​informations,​ visionnez le webinaire à la demande [[https://​www.nginx.com/​resources/​webinars/​content-caching-nginx-plus/​|Content Caching]] pour apprendre à améliorer considérablement les performances d'un site Web et approfondir les capacités de mise en cache de Nginx. Pour plus d'​informations,​ visionnez le webinaire à la demande [[https://​www.nginx.com/​resources/​webinars/​content-caching-nginx-plus/​|Content Caching]] pour apprendre à améliorer considérablement les performances d'un site Web et approfondir les capacités de mise en cache de Nginx.
  
-==== - Optimisation des performances pour le contenu diffusé ​====+=== - Optimisation des performances pour le contenu diffusé ===
  
 La vitesse de chargement est un facteur crucial pour servir n'​importe quel contenu. La vitesse de chargement est un facteur crucial pour servir n'​importe quel contenu.
Ligne 612: Ligne 447:
 Des optimisations mineures de votre configuration Nginx peut augmenter la productivité et aider à atteindre des performances optimales. Des optimisations mineures de votre configuration Nginx peut augmenter la productivité et aider à atteindre des performances optimales.
  
-=== - Activation de sendfile ​===+== - Activation de sendfile ==
  
 Par défaut, Nginx gère lui-même la transmission de fichiers et copie le fichier dans le tampon avant de l'​envoyer. Par défaut, Nginx gère lui-même la transmission de fichiers et copie le fichier dans le tampon avant de l'​envoyer.
Ligne 628: Ligne 463:
 </​code>​ </​code>​
  
-=== - Activation de tcp_nopush ​===+== - Activation de tcp_nopush ==
  
 Utilisez la directive tcp_nopush avec la directive sendfile on. Utilisez la directive tcp_nopush avec la directive sendfile on.
Ligne 642: Ligne 477:
 </​code>​ </​code>​
  
-=== - Activation de tcp_nodelay ​===+== - Activation de tcp_nodelay ==
  
 La directive tcp_nodelay permet de remplacer l'​algorithme de Nagle, conçu à l'​origine pour résoudre les problèmes liés aux petits paquets dans les réseaux lents. La directive tcp_nodelay permet de remplacer l'​algorithme de Nagle, conçu à l'​origine pour résoudre les problèmes liés aux petits paquets dans les réseaux lents.
Ligne 664: Ligne 499:
 </​code>​ </​code>​
  
-=== - Optimisation de la file d'​attente de backlog ​===+== - Optimisation de la file d'​attente de backlog ==
  
 L'un des facteurs importants est la vitesse à laquelle Nginx peut gérer les connexions entrantes. L'un des facteurs importants est la vitesse à laquelle Nginx peut gérer les connexions entrantes.
Ligne 727: Ligne 562:
 </​code>​ </​code>​
  
-===== - Configuration d'un serveur proxy simple ​=====+==== - Configuration d'un serveur proxy simple ====
  
 L'une des utilisations fréquentes de nginx consiste à le configurer en tant que serveur proxy, ce qui signifie qu'un serveur reçoit les demandes, les transmet aux serveurs proxy, récupère les réponses et les envoie aux clients. L'une des utilisations fréquentes de nginx consiste à le configurer en tant que serveur proxy, ce qui signifie qu'un serveur reçoit les demandes, les transmet aux serveurs proxy, récupère les réponses et les envoie aux clients.
Ligne 809: Ligne 644:
 De nombreuses autres directives peuvent être utilisées pour configurer davantage une connexion proxy. De nombreuses autres directives peuvent être utilisées pour configurer davantage une connexion proxy.
  
-===== - Configuration de la fonction proxy de FastCGI ​=====+==== - Configuration de la fonction proxy de FastCGI ====
  
 nginx peut être utilisé pour router des requêtes vers des serveurs FastCGI qui exécutent des applications construites avec différents frameworks et langages de programmation tels que PHP. nginx peut être utilisé pour router des requêtes vers des serveurs FastCGI qui exécutent des applications construites avec différents frameworks et langages de programmation tels que PHP.
Ligne 839: Ligne 674:
 Cela va mettre en place un serveur qui acheminera toutes les demandes à l'​exception des demandes d'​images statiques au serveur proxy opérant sur localhost:​9000 via le protocole FastCGI. Cela va mettre en place un serveur qui acheminera toutes les demandes à l'​exception des demandes d'​images statiques au serveur proxy opérant sur localhost:​9000 via le protocole FastCGI.
  
-===== - Serveurs Virtuels ​=====+==== - Serveurs Virtuels ====
  
 Voir [[tutoriel:​internet:​nginx:​vhosts:​start]] Voir [[tutoriel:​internet:​nginx:​vhosts:​start]]
-====== - Utilisation ====== 
  
-===== - Démarrer, arrêter et recharger la configuration =====+Nginx Server Block Setup 
 +Configure Nginx Ubuntu
  
-Pour démarrer **nginx**, exécutez-le.+Les blocs server de Nginx permettent d'​héberger plusieurs sites sur un seul serveur.
  
-<WRAP center round info 60%> +Nous allons utiliser ​le domaine example.com.
-Une fois démarré, pour contrôler ​le processus, lancez :<​cli>​$ sudo nginx -s signal</​cli>​ +
-où //signal// peut être l'un des éléments suivants : +
-  ? stop +
-  : arrêt rapide +
-  ? quit +
-  : arrêt propre +
-  : doit être exécutée sous le même utilisateur que celui qui a démarré nginx +
-  : arrête nginx en attendant la fin des processus en cours +
-  ? reload +
-  : recharger le fichier de configuration +
-  ? reopen +
-  : rouvrir les fichiers journaux+
  
 +Par défaut, Nginx traite toujours le contenu du répertoire /​var/​www/​html/​.
 +
 +Cette configuration ne convient que si vous hébergez un seul site.
 +
 +Here:
 +
 +Nous allons créer un autre répertoire pour servir le domaine exemple.com.
 +
 +DNous laisserons le répertoire /​var/​www/​html pour le cas où aucun domaine de la configuration nginx ne correspond.
 +
 +Créez le répertoire :<​cli>​$ sudo mkdir -p /​var/​www/​example.com/​html</​cli>​
 +
 +<WRAP center round info 60%>
 +Le -p crée le ou les répertoires parents si nécessaire.
 </​WRAP>​ </​WRAP>​
 +
 +Après cela, nous assignerons le propriétaire du répertoire en utilisant la variable $USER :<​cli>​$ sudo chown -R $USER:$USER /​var/​www/​example.com/​html</​cli>​
 +
 +Définissez les autorisations pour la racine Web :<​cli>​$ sudo chmod -R 755 /​var/​www/​example.com</​cli>​
 +
 +Then, you have to create the index.html page using the nano editor as mentioned below.
 +
 +Éditez avec les droits d'​administration le fichier **/​var/​www/​example.com/​html/​index.html** pour y écrire :
 +
 +<code html /​var/​www/​example.com/​html/​index.html>​
 +<​html>​
 +    <​head>​
 +        <​title>​Welcome to Example.com!</​title>​
 +    </​head>​
 +    <​body>​
 +        <​h1>​Success! ​ The example.com server block is working!</​h1>​
 +    </​body>​
 +</​html>​
 +
 +Pour que le contenu ci-dessus soit servi, nous devons créer un bloc de serveur Nginx dans /​etc/​nginx/​sites-available/​example.com.
 +éditez avec les droits d'​administration le fichier **/​etc/​nginx/​sites-available/​example.com** pour y écrire :
 +
 +<code nginx /​etc/​nginx/​sites-available/​example.com>​
 +server {
 +        listen 80;
 +        listen [::]:80;
 +
 +        root /​var/​www/​example.com/​html;​
 +        index index.html index.htm index.nginx-debian.html;​
 +
 +        server_name example.com www.example.com;​
 +
 +        location / {
 +                try_files $uri $uri/ =404;
 +        }
 +}</​code>​
 +
 +Activez en créant le lien :<​cli>​$ sudo ln -s /​etc/​nginx/​sites-available/​example.com /​etc/​nginx/​sites-enabled/</​cli>​
 +
 +Nous avons configuré deux blocs pour les requêtes du serveur:
 +  * **example.com** qui servira le contenu par exemple.com et www.example.com
 +  * **default** qui servira le contenu de la demande sur le port 80.
 +
 +Nous devons faire une petite modification dans le fichier de configuration Nginx pour éviter un problème de mémoire. le problème se pose lorsque vous ajoutez plusieurs noms de serveur.
 +éditez avec les droits d'​administration le fichier **/​etc/​nginx/​nginx.conf** pour dé-commenter la ligne :
 +<code nginx>
 +...
 +http {
 +    ...
 +    server_names_hash_bucket_size 64;
 +    ...
 +}
 +</​code>​
 +
 +Une fois terminées les étapes ci-dessus, testez la syntaxe du fichier Nginx :<​cli>​$ sudo nginx -t</​cli>​
 +
 +Puis redémarrez le serveur Nginx :<​cli>​$ sudo systemctl restart nginx</​cli>​
 +
 +si vous allez à votre adresse IP sur votre navigateur, vous devriez voir «Succès! Le bloc de serveur example.com fonctionne !>>
 +
 +==== - Sécurisation avec OpenSSL ====
 +
 +Voir [[tutoriel:​internet:​lemp:​ssl:​start|]]
 +
 +
 +===== - Utilisation =====
 +
 +==== - Commandes de gestion de Nginx ====
 +
 +Le serveur est en cours d'​exécution.
 +
 +^                                     Pour l'​arrêter | <​cli>​$ sudo systemctl stop nginx</​cli> ​                                                                                             |
 +^                                   Pour le démarrer | <​cli>​$ sudo systemctl start nginx</​cli> ​                                                                                            |
 +^                                 Pour le redémarrer | <​cli>​$ sudo systemctl restart nginx</​cli> ​                                                                                          |
 +^  Si vous avez apporté des modifications au serveur | <​cli>​$ sudo systemctl reload nginx</​cli>​ne coupera pas les connexions existantes\\ et ne fera que mettre à jour les modifications. ​ |
 +^    Pour empêcher Nginx de démarrer avec le système | <​cli>​$ sudo systemctl disable nginx</​cli> ​                                                                                          |
 +^               Pour démarrer Nginx  avec le système | <​cli>​$ sudo systemctl enable nginx</​cli> ​                                                                                           |
 +
 +Autre méthode :
 +Démarrer, arrêter et recharger la configuration
 +^ <​cli>​$ sudo nginx -s stop</​cli> ​   | arrêt rapide ​                                                                                                                |
 +^ <​cli>​$ sudo nginx -s quit</​cli> ​   | arrêt propre\\ à exécuter sous l' utilisateur qui a démarré nginx\\ arrête nginx en attendant la fin des processus en cours  |
 +^ <​cli>​$ sudo nginx -s reload</​cli> ​ | recharge le fichier de configuration ​                                                                                        |
 +^ <​cli>​$ sudo nginx -s reopen</​cli> ​ | rouvrir les fichiers journaux ​                                                                                               |
  
 On peut aussi tuer les processus nginx avec l'​utilitaire kill. On peut aussi tuer les processus nginx avec l'​utilitaire kill.
  
 Pour obtenir la liste de tous les processus nginx en cours d'​exécution,​ vous pouvez lancer :<​cli>​$ sudo ps -ax | grep nginx</​cli>​ Pour obtenir la liste de tous les processus nginx en cours d'​exécution,​ vous pouvez lancer :<​cli>​$ sudo ps -ax | grep nginx</​cli>​
-====== - Désinstallation ​======+ 
 +===== - Désinstallation =====
  
 Comme d'​habitude,​ <​cli>​$ sudo apt remove nginx</​cli>​ Comme d'​habitude,​ <​cli>​$ sudo apt remove nginx</​cli>​
-====== - Voir aussi ======+ 
 +===== - Voir aussi =====
  
   * **(en)** [[https://​nginx.org/​en/​docs/​beginners_guide.html]]   * **(en)** [[https://​nginx.org/​en/​docs/​beginners_guide.html]]