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
nginx [Le 14/08/2015, 00:44]
BeAvEr -1/...
nginx [Le 31/10/2023, 10:28] (Version actuelle)
bcag2 ancienne révision (Le 30/05/2023, 10:36) restaurée
Ligne 1: Ligne 1:
-{{tag>​serveur ​BROUILLON}}+{{tag>​serveur}}
  
 ---- ----
Ligne 7: Ligne 7:
 ====== Nginx : serveur Web asynchrone ====== ====== Nginx : serveur Web asynchrone ======
  
-<note warning>​En cours de réédition --- //​[[:​utilisateurs:​beaver|beaver]] Le 13/08/2015, 15:​04//</​note>​ +**Nginx** (Engine X, prononcez [n-gèn-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 faire office de serveur ​reverse ​proxy Web et de serveur proxy de messagerie électronique (IMAP/​POP3). Une partie de la documentation a été traduite du russe vers l'​anglais ​puis vers le français. Ses sources sont disponibles sous une licence de type BSD.
- +
-**Nginx** (Engine X, prononcez [n-gèn-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 faire office de serveur proxy inverse ​Web et de 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.+
  
 ---- ----
Ligne 19: Ligne 17:
 ^ ^ nginx-extras ^ nginx-full ^ nginx-light ^ ^ ^ nginx-extras ^ nginx-full ^ nginx-light ^
 | Core, Access, Auth Basic, Auto Index, Charset, Empty GIF, FastCGI, Gzip, Headers, Index, Log, Map, Proxy, Rewrite, Upstream | X | X | X | | Core, Access, Auth Basic, Auto Index, Charset, Empty GIF, FastCGI, Gzip, Headers, Index, Log, Map, Proxy, Rewrite, Upstream | X | X | X |
-| User ID, UWSGI, Browser, Geo, Limit Requests, Limit Zone, Memcached, Referer, SCGI, Split Clients, SSI | X | X | | ​+| User ID, UWSGI, Browser, Geo, Limit Requests, Limit Zone, Memcached, Referer, SCGI, Split Clients, SSI | X | X | |
 | Gzip Precompression,​ IPv6, SSL, Stub Status | ​ X | X | X | | Gzip Precompression,​ IPv6, SSL, Stub Status | ​ X | X | X |
 | Substitution,​ WebDAV, XSLT, Addition, Debug, GeoIP, Image Filter, Real IP | ​ X | X | | | Substitution,​ WebDAV, XSLT, Addition, Debug, GeoIP, Image Filter, Real IP | ​ X | X | |
Ligne 38: Ligne 36:
 La configuration de Nginx est modularisée en plusieurs fichiers de configuration [[:​tutoriel:​comment_modifier_un_fichier|textuel]] que vous trouverez dans le dossier ///​etc/​nginx//:​ La configuration de Nginx est modularisée en plusieurs fichiers de configuration [[:​tutoriel:​comment_modifier_un_fichier|textuel]] que vous trouverez dans le dossier ///​etc/​nginx//:​
   * **nginx.conf:​** Le fichier de configuration globale du **serveur**. Les paramètres qui s'y trouvent doivent impacter l'​ensemble du serveur ; vous n'y toucherez normalement pas.   * **nginx.conf:​** Le fichier de configuration globale du **serveur**. Les paramètres qui s'y trouvent doivent impacter l'​ensemble du serveur ; vous n'y toucherez normalement pas.
-  * **mime.types:​** La liste des types MIME résolu ​par les extensions de fichiers. Cette liste indique la nature des fichiers ​renvoyées ​par le serveur (ex: ceci est une page web ou ceci est une vidéo ogg).+  * **mime.types:​** La liste des types MIME résolus ​par les extensions de fichiers. Cette liste indique la nature des fichiers ​renvoyés ​par le serveur (ex: ceci est une page web ou ceci est une vidéo ogg).
   * **sites-available:​** Contient les fichiers de configurations de vos sites ou services (un fichier par pré-occupation/​site/​service). Ce dossier est un //dépôt// ; les fichiers de configuration qui y sont ne sont pas pris en compte.   * **sites-available:​** Contient les fichiers de configurations de vos sites ou services (un fichier par pré-occupation/​site/​service). Ce dossier est un //dépôt// ; les fichiers de configuration qui y sont ne sont pas pris en compte.
   * **sites-enabled:​** Doit contenir des [[lien_physique_et_symbolique#​exemple_de_lien_symbolique|liens symboliques]] vers les fichiers de **site-available** que vous souhaitez activer.   * **sites-enabled:​** Doit contenir des [[lien_physique_et_symbolique#​exemple_de_lien_symbolique|liens symboliques]] vers les fichiers de **site-available** que vous souhaitez activer.
-  * **conf.d:​** ​ Emplacement pour appliquer les paramètres ​commun ​à tout les sites. Peut également servir de la même facon que **site-available** (renommer ses fichiers "​.conf"​ en "​.disabled"​ pour désactiver les sites). +  * **conf.d:​** ​ Emplacement pour appliquer les paramètres ​communs ​à tous les sites. Peut également servir de la même façon ​que **site-available** (renommer ses fichiers "​.conf"​ en "​.disabled"​ pour désactiver les sites).
- +
----- +
- +
-==== Le nginx.conf en profondeur ==== +
- +
-Le fichier **nginx.conf** est l'​élément névralgique de votre serveur Nginx. Nous allons voir à quoi ressemble un fichier **nginx.conf** par défaut sous Ubuntu (avec une petite traduction en Français). +
- +
-FIXME EN COURS --- //​[[:​utilisateurs:​beaver|beaver]] Le 11/08/2015, 15:30//. +
- +
- +
-<​code>​pid /​run/​nginx.pid;##​**Syntaxe:​** pid **fichier.pid**;</​code>​ +
- +
-<​note>​Le fichier stockera le [[https://​fr.wikipedia.org/​wiki/​Identifiant_de_processus|PID]] de votre processus.</​note>​ +
- +
----- +
- +
-<​code>​events { +
- +
-worker_connections 768; ##​**Syntaxe:​** worker_connections **nombre**;</​code>​ +
- +
-<​note>​Définir le nombre maximal de connexions simultanées ouvertes par le processus.</​note>​ +
- +
----- +
- +
- +
-<​code>​multi_accept on;} ##​**Syntaxe:​** multi_accept **on** | **off**;</​code>​ +
- +
-<​note>​Si **multi_accept** est désactivé,​ le processus acceptera une nouvelle connexion à la fois, dans le cas contraire, le processus acceptera toutes les nouvelles connexions en même temps.</​note>​ +
- +
----- +
- +
- +
-<​code>​http { +
- +
-sendfile on; ##​**Syntaxe;​** sendfile **on** | **off**;</​code>​ +
- +
-<​note>​Nous allons dire que nous avons un **index ​ index.php;​** dans notre virtual host, Sendfile permettra de se délester de PHP pour l’envoi des fichiers aux navigateurs. Il est fortement recommandé d’utiliser ce module pour alléger les process sur le serveur. +
- +
-</​note>​ +
- +
----- +
- +
-<​code>​tcp_nopush on; ##​**Syntaxe:​** tcp_nopush **on** | **off**</​code>​ +
- +
-<​note>​ +
- +
-Le module **tcp_nopush** fait le contraire de **tcp_nodelay** : au lieu d’optimiser les délais d’envoi des informations,​ il optimise la quantité d’informations envoyée. **tcp_nopush** et **sendfile** sont indissociable((comprendre qu'il faut absolument que sendfile soit actif.. .)). +
- +
-</​note>​ +
- +
----- +
- +
-<​code>​tcp_nodelay on; ##​**Syntaxe:​** tcp_nodelay **on** | **off**;</​code>​ +
- +
-<​note>​Active ou désactive l'​utilisation du module **tcp_nodelay**. Le module est utilisé uniquement si une connexion est passée en état (persistant)((keep TCP alive (maintenir TCP en vie), c'est à dire conserver la connexion TCP)) = (KeepAlive)((keep TCP alive (keep TCP alive (maintenir TCP en vie), c'est à dire conserver la connexion TCP)).</​note>​ +
- +
----- +
- +
- +
-<​code>​keepalive_timeout 65; ##​**Syntaxe:​** keepalive_timeout **(je suis le premier paramètre)timeout** **(je suis le paramètre facultatif)[header_timeout]**;</​code>​ +
- +
-<​note>​**Le premier paramètre** définit un délai pendant lequel une connexion cliente KeepAlive restera ouverte côté serveur. La valeur 0 désactive les connexions clientes KeepAlive. **Le deuxième paramètre facultatif** définit la valeur de délai de l'​[[https://​fr.wikipedia.org/​wiki/​Header|entête // header]].</​note>​  +
- +
----- +
- +
-<​code>​types_hash_max_size 2048; ##​**Syntaxe:​** types_hash_max_size **taille**;</​code>​ +
- +
-<​note>​Définit la taille maximale des types de [[https://​fr.wikipedia.org/​wiki/​Table_de_hachage|tables de hachage]]. Les détails de la mise en place des tables de hachage sont fournis dans un document [[http://​nginx.org/​en/​docs/​hash.html|distinct]]. +
-Pour traiter rapidement des ensembles de données statiques tels que le nom de votre serveur, les directions [[http://​nginx.org/​en/​docs/​http/​ngx_http_map_module.html#​map|map]],​ Les [[https://​fr.wikipedia.org/​wiki/​Type_MIME|Types MIME]], etc ... Nginx utilise les tables de hachage. +
- +
-</​note>​ +
- +
- +
----- +
- +
- +
-<​code>​server_names_hash_bucket_size 64; ##</​code>​ +
- +
-<​note>​En cours</​note>​ +
- +
----- +
- +
- +
-<​code>​server_name_in_redirect off; ##​**Syntaxe:​** server_name_in_redirect **on** | **off**;</​code>​ +
- +
-<​note>​Quand le module **name_server** n'est pas définit dans votre virtual host, le contenu de **Host** dans le header est utilisé. Si ce champ n'est pas présent, l'​adresse IP du serveur est utilisée, si vous avez pas d'​adresse IP ... -> m(.</​note>​ +
- +
-<​note>​ +
-GET **/** <- Le chemin absolu ou se trouve le fichier index.html. ​ **HTTP/​1.1** ​ <- La version http utilisée est 1.1, donc le **host**((https://​www.ietf.org/​rfc/​rfc2616.txt)) est obligatoire. +
- +
-**Host: ubuntu-fr.org** <- Le nom de domaine, c'est cette partie que tentera de récupérer le module  +
-**server_name_in_redirect** si il est actif. +
- +
-</​note>​ +
- +
-<​file ​ header header>​ +
- +
-> GET **/** **HTTP/​1.1** +
-> User-Agent: curl/​7.35.0 +
-> **Host: ubuntu-fr.org** +
-> Accept: */* +
->  +
-< HTTP/1.1 200 OK +
-* Server nginx is not blacklisted +
-< Server: nginx +
-< Content-Type:​ text/html; charset=utf-8 +
-< Expires: Sun, 19 Nov 1978 05:00:00 GMT +
-< Last-Modified:​ Wed, 12 Aug 2015 16:41:34 +0000 +
-< ETag: "​1439397694"​ +
-< Content-Language:​ en +
-< X-Generator:​ Drupal 7 (http://​drupal.org) +
-< Link: </​intro>;​ rel="​canonical",</​node/​17>;​ rel="​shortlink"​ +
-< Content-Length:​ 15956 +
-< Accept-Ranges:​ bytes +
-< Date: Wed, 12 Aug 2015 16:41:34 GMT +
-< Age: 0 +
-< Connection: keep-alive +
-< Cache-Control:​ no-cache, must-revalidate,​ max-age=0 +
-< Pragma: no-cache +
-<  +
-{ [data not shown] +
-100 15956  100 15956    0     ​0 ​ 18211      0 --:--:-- --:--:-- --:--:-- 18235 +
-* Connection #0 to host ubuntu-fr.org left intact +
-</​file>​ +
- +
----- +
- +
- +
-<​code>​include /​etc/​nginx/​mime.types;​ ##La liste des types MIME résolu par les extensions de fichiers.</​code>​ +
- +
-<​note>​Cette liste indique la nature des fichiers renvoyées par le serveur (ex: ceci est une page web http://​votrendd.tld/​hello.html ou ceci est une vidéo ogg ..  http://​votrendd.tld/​mavideo.ogg pour que Nginx "​comprenne"​ que c'est un format **.html** ou un format **.ogg** il lui faut un fichier mime.types).</​note>​ +
- +
- +
----- +
- +
- +
----- +
- +
- +
-<​code>​gzip_disable "​msie6";​ ##​**Syntaxe:​** gzip_disable **regex** ...;</​code>​ +
- +
-<​note>​Désactive via une regexp gzipping. Le module utilisera encore une fois le header pour récupérer l'​**User-Agent** de votre visiteur. Vous noterez qu'il existe une exception à la règle concernant les regexp -> [[https://​fr.wikipedia.org/​wiki/​Internet_Explorer_6|msie6]] :-), si cette exception ne serait pas d'​actualité,​ nous aurions utilisé cette regexp: <​code>​MSIE [4-6]\.</​code>​.</​note>​ +
- +
-<​file ​ header header>​ +
- +
-> GET / HTTP/1.1 +
-> **User-Agent:​** curl/​7.35.0 +
-> Host: ubuntu-fr.org +
-> Accept: */* +
->  +
-< HTTP/1.1 200 OK +
-* Server nginx is not blacklisted +
-< Server: nginx +
-< Content-Type:​ text/html; charset=utf-8 +
-< Expires: Sun, 19 Nov 1978 05:00:00 GMT +
-< Last-Modified:​ Wed, 12 Aug 2015 16:41:34 +0000 +
-< ETag: "​1439397694"​ +
-< Content-Language:​ en +
-< X-Generator:​ Drupal 7 (http://​drupal.org) +
-< Link: </​intro>;​ rel="​canonical",</​node/​17>;​ rel="​shortlink"​ +
-< Content-Length:​ 15956 +
-< Accept-Ranges:​ bytes +
-< Date: Wed, 12 Aug 2015 16:41:34 GMT +
-< Age: 0 +
-< Connection: keep-alive +
-< Cache-Control:​ no-cache, must-revalidate,​ max-age=0 +
-< Pragma: no-cache +
-<  +
-{ [data not shown] +
-100 15956  100 15956    0     ​0 ​ 18211      0 --:--:-- --:--:-- --:--:-- 18235 +
-* Connection #0 to host ubuntu-fr.org left intact +
-</​file>​ +
- +
----- +
- +
- +
-<​code>​gzip_proxied any; ##​**Syntaxe:​** gzip_proxied off | expired | **no-cache** | no-store | private | no_last_modified | no_etag | auth | any; +
-</​code>​ +
- +
-<​note>​Active ou désactive la compression gzip pour les proxys. gzip_proxied vérifie le header de votre connexion ACK  (la partie **Cache-Control**). +
-</​note>​ +
-<​note>​Nous voyons bien que le site active la compression pour les connexions ACK, seulement si le header comporte le paramètre **no-cache** dans le **Cache-Control**.</​note>​ +
-<​file ​ header header>​ +
- +
-> GET / HTTP/1.1 +
-> User-Agent: curl/​7.35.0 +
-> Host: ubuntu-fr.org +
-> Accept: */* +
->  +
-< HTTP/1.1 200 OK +
-* Server nginx is not blacklisted +
-< Server: nginx +
-< Content-Type:​ text/html; charset=utf-8 +
-< Expires: Sun, 19 Nov 1978 05:00:00 GMT +
-< Last-Modified:​ Wed, 12 Aug 2015 16:41:34 +0000 +
-< ETag: "​1439397694"​ +
-< Content-Language:​ en +
-< X-Generator:​ Drupal 7 (http://​drupal.org) +
-< Link: </​intro>;​ rel="​canonical",</​node/​17>;​ rel="​shortlink"​ +
-< Content-Length:​ 15956 +
-< Accept-Ranges:​ bytes +
-< Date: Wed, 12 Aug 2015 16:41:34 GMT +
-< Age: 0 +
-< Connection: keep-alive +
-< **Cache-Control**:​ **no-cache**,​ must-revalidate,​ max-age=0 +
-< Pragma: no-cache +
-<  +
-{ [data not shown] +
-100 15956  100 15956    0     ​0 ​ 18211      0 --:--:-- --:--:-- --:--:-- 18235 +
-* Connection #0 to host ubuntu-fr.org left intact +
-</​file>​ +
- +
----- +
- +
- +
-<​code>​gzip_comp_level 6; ##</​code>​ +
- +
-<​note>​En cours</​note>​ +
- +
----- +
- +
- +
-<​code>​gzip_buffers 16 8k; ##</​code>​ +
- +
-<​note>​En cours</​note>​ +
- +
----- +
- +
- +
-<​code>​gzip_http_version 1.1; ##</​code>​ +
- +
-<​note>​En cours</​note>​ +
- +
----- +
- +
- +
-<​code>​gzip_types text/plain text/css application/​json application/​x-javascript text/xml application/​xml application/​xml+rss text/​javascript;​ ##</​code>​ +
- +
----- +
- +
- +
-<​note>​En cours</​note>​ +
- +
-<​code>​nginx-naxsi config ##</​code>​ +
- +
----- +
- +
- +
-<​note>​En cours</​note>​ +
- +
-<​code>​include /​etc/​nginx/​naxsi_core.rules;​ ##</​code>​ +
- +
----- +
- +
- +
-<​note>​En cours</​note>​ +
- +
-<​code>​nginx-passenger config;##</​code>​ +
- +
----- +
- +
- +
-<​note>​En cours</​note>​ +
-  +
-<​code>​passenger_root /usr; ##</​code>​ +
- +
----- +
- +
- +
-<​note>​En cours</​note>​ +
- +
-<​code>​passenger_ruby /​usr/​bin/​ruby;​ ##</​code>​ +
- +
----- +
- +
- +
-<​note>​En cours</​note>​ +
- +
-<​code>​include /​etc/​nginx/​conf.d/​*.conf;</​code>​ +
- +
----- +
- +
- +
-<​note>​En bash, le métacaractère ** * ** correspond à aucun caractère, n'​importe quel caractère ou un ensemble de caractères,​ via ce métacaractère vous allez pouvoir charger tous vos fichiers **.conf** sans devoir en définir le nom au préalable.</​note>​ +
- +
----- +
- +
- +
-<​code>​include /​etc/​nginx/​sites-enabled/​*;​}</​code>​ +
- +
-<​note>​En bash, le métacaractère ** * ** correspond à aucun caractère, n'​importe quel caractère ou un ensemble de caractères,​ via ce métacaractère vous allez pouvoir charger tous vos fichiers ***.***. Cette partie contiendra vos sites internet actifs, à savoir que vous devez au préalable utiliser **/​etc/​nginx/​sites-available/​** :-). </​note>​ +
- +
----- +
- +
- +
-<​code>​mail { +
- +
-auth_http localhost/​auth.php;​ ##</​code>​ +
- +
-<​note>​En cours</​note>​ +
- +
----- +
- +
-  +
-<​code>​pop3_capabilities "​TOP"​ "​USER";​ ##</​code>​ +
- +
-<​note>​En cours</​note>​ +
- +
----- +
- +
- +
-<​code>​imap_capabilities "​IMAP4rev1"​ "​UIDPLUS";​ ##</​code>​ +
- +
-<​note>​En cours</​note>​ +
- +
----- +
- +
- +
-<​code>​server { +
- +
-listen ​    ​localhost:​110;​ ##</​code>​ +
- +
----- +
- +
- +
-<​note>​En cours</​note>​ +
- +
-<​code>​protocol ​  pop3; ##</​code>​ +
- +
----- +
- +
- +
-<​note>​En cours</​note>​ +
- +
-<​code>​proxy ​     on; ##</​code>​ +
- +
----- +
- +
- +
-<​note>​En cours</​note>​ +
- +
-<​code>​server { +
- +
-listen ​    ​localhost:​143;​ ##</​code>​ +
- +
----- +
- +
- +
-<​note>​En cours</​note>​ +
- +
-<​code>​protocol ​  imap; ##</​code>​+
  
 ---- ----
  
 +==== Le nginx.conf par défaut ====
  
-<​note>​En cours</note>+Le fichier **/etc/​nginx/​nginx.conf** est l'​élément névralgique de votre serveur Nginx. ​
  
-<​code>​proxy      on;}} ##</​code>​+Après modification,​ il est prudent de le //tester// avec :  
 +<​code ​bash>nginx -t</​code>​
  
-<note>En cours</note>+Puis, pour que les modifications de configuration soient prises en compte, il faut lancer (-s : send **s**ignal ((https://​www.nginx.com/​resources/​wiki/​start/​topics/​tutorials/​commandline/​))) : 
 +<code bash>nginx -s reload</code>
  
 ---- ----
Ligne 413: Ligne 63:
 Pour configurer votre nom de domaine (vhost), vous pouvez copier la configuration par défaut du vhost « default » puis y apporter vos modifications. Exemple : 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+  ​sudo cp /​etc/​nginx/​sites-available/​default /​etc/​nginx/​sites-available/​mondomaine.tld
  
 Puis, modifier la configuration de votre nom de domaine mondomaine.tld en [[:​tutoriel:​comment_modifier_un_fichier|modifiant le fichier]] **/​etc/​nginx/​sites-available/​mondomaine.tld**. Puis, modifier la configuration de votre nom de domaine mondomaine.tld en [[:​tutoriel:​comment_modifier_un_fichier|modifiant le fichier]] **/​etc/​nginx/​sites-available/​mondomaine.tld**.
Ligne 427: Ligne 77:
 ---- ----
  
-===== Configuration ​serveur ​proxy inverse ​et cache Web =====+===== Configuration ​ du reverse ​proxy et du cache Web =====
    
-==== Configuration d'un proxy inverse ​et cache avec nginx ===+==== Configuration d'​un ​reverse ​proxy et du cache avec Nginx ===
  
 Ce tutoriel montre la configuration de nginx en tant que reverse proxy cache. Ce tutoriel montre la configuration de nginx en tant que reverse proxy cache.
Ligne 443: Ligne 93:
  
   * Avoir lu la page de documentation sur [[:​nginx|Nginx : serveur Web asynchrone]].   * Avoir lu la page de documentation sur [[:​nginx|Nginx : serveur Web asynchrone]].
-  * Comprendre la fonction d'un reverse proxy ou un proxy inverse [[http://​fr.wikipedia.org/​wiki/​Reverse_proxy|Article wikipedia]].+  * Comprendre la fonction d'un reverse proxy ou un proxy inverse [[https://​fr.wikipedia.org/​wiki/​Reverse_proxy|Article wikipedia]].
  
 ==== Configuration ==== ==== Configuration ====
Ligne 452: Ligne 102:
  
  
-La configuration qui va suivre se décomposera en trois parties : +La configuration qui va suivre se décomposera en trois parties :
  
   * Le paramétrage global du serveur nginx.   * Le paramétrage global du serveur nginx.
   * Le paramétrage des fonctions de reverse proxy et de cache.   * Le paramétrage des fonctions de reverse proxy et de cache.
-  * Un exemple de configuration du serveur web se trouvant derrière le reverse proxy. ​+  * Un exemple de configuration du serveur web se trouvant derrière le reverse proxy.
  
 Les fichiers et les dossiers de configuration utilisés seront : Les fichiers et les dossiers de configuration utilisés seront :
Ligne 467: Ligne 117:
 Cette séparation a pour but d'​ajouter de la clarté dans la configuration car tous les fichiers de configuration sont inclus dans le fichier nginx.conf. Cette séparation a pour but d'​ajouter de la clarté dans la configuration car tous les fichiers de configuration sont inclus dans le fichier nginx.conf.
  
-=== Configuration ​globale ​du serveur (fusion en cours avec ma partie -> nginx.conf ​en profondeur) ​===+=== Configuration du nginx.conf ​avec proxy ===
  
 La configuration se fait dans le fichier /​etc/​nginx/​nginx.conf La configuration se fait dans le fichier /​etc/​nginx/​nginx.conf
  
-Contenu du fichier ​+Contenu du fichier
  
 <​code>​ <​code>​
Ligne 529: Ligne 179:
 | user www-data; ##​**Syntaxe:​** **user** **user** **[group]** ​   | Définit l'​utilisateur et le groupe avec lequel le daemon Nginx sera lancé. Si le groupe est omis, un groupe dont le nom correspond à celui de l'​utilisateur sera utilisé. | | user www-data; ##​**Syntaxe:​** **user** **user** **[group]** ​   | Définit l'​utilisateur et le groupe avec lequel le daemon Nginx sera lancé. Si le groupe est omis, un groupe dont le nom correspond à celui de l'​utilisateur sera utilisé. |
 | worker_processes 1; ##​**Syntaxe:​** worker_processes **nombre** **auto**; | La valeur optimale dépend de nombreux facteurs.. y compris (mais non limité à) au nombre de CPU que vous disposez; le nombre de disques durs.. etc :-). Si vous avez un doute sur la valeur à indiquer, veuillez prendre comme référence le nombre de CPU que vous disposez, vous pouvez aussi utiliser **auto**. | | worker_processes 1; ##​**Syntaxe:​** worker_processes **nombre** **auto**; | La valeur optimale dépend de nombreux facteurs.. y compris (mais non limité à) au nombre de CPU que vous disposez; le nombre de disques durs.. etc :-). Si vous avez un doute sur la valeur à indiquer, veuillez prendre comme référence le nombre de CPU que vous disposez, vous pouvez aussi utiliser **auto**. |
-| 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 ​        | +| worker_connections; ##​**Syntaxe:​** ? | 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 | Vous retrouverez dans votre fichier **access.log** les **GET'​S/​POST'​S** de chaque visiteur visitant votre site.|+|access_log ​ | Vous retrouverez dans votre fichier **access.log** les **GET'​S/​POST'​S** de chaque visiteur visitant votre site.|
 |error_log | Ici à contrario vous retrouverez dans votre fichier **error.log** les erreurs **403, 404, 500, 503**, venant de vos visiteurs (par exemple):​-). | |error_log | Ici à contrario vous retrouverez dans votre fichier **error.log** les erreurs **403, 404, 500, 503**, venant de vos visiteurs (par exemple):​-). |
 | default_type application/​octet-stream;​ ##​**Syntaxe:​** default_type **mime-type**;​ | Définit le [[https://​fr.wikipedia.org/​wiki/​Type_MIME|Type MIME]] ​ par défaut d'une requête ACK. Un mappage sur l'​extension de [[https://​fr.wikipedia.org/​wiki/​Type_MIME|Type MIME]] peut être configuré avec le module [[http://​nginx.org/​en/​docs/​http/​ngx_http_core_module.html#​types|type]]. | | default_type application/​octet-stream;​ ##​**Syntaxe:​** default_type **mime-type**;​ | Définit le [[https://​fr.wikipedia.org/​wiki/​Type_MIME|Type MIME]] ​ par défaut d'une requête ACK. Un mappage sur l'​extension de [[https://​fr.wikipedia.org/​wiki/​Type_MIME|Type MIME]] peut être configuré avec le module [[http://​nginx.org/​en/​docs/​http/​ngx_http_core_module.html#​types|type]]. |
 |server_tokens off; ##​**Syntaxe:​** server_tokens **on** **off** | Active ou désactive l'​émission de votre [[https://​ubuntu-fr.org/​.ht|version]] Nginx.| |server_tokens off; ##​**Syntaxe:​** server_tokens **on** **off** | Active ou désactive l'​émission de votre [[https://​ubuntu-fr.org/​.ht|version]] Nginx.|
-|client_body_buffer_size | définit la taille au delà de laquelle la requête sera enregistrée dans un fichier | +|client_body_buffer_size ​##​**Syntaxe:​** ? | définit la taille au delà de laquelle la requête sera enregistrée dans un fichier | 
-|client_max_body_size | taille max des données envoyées par un client ​ | +|client_max_body_size ​##​**Syntaxe:​** ? | taille max des données envoyées par un client ​ | 
-| large_client_header_buffers | définit le nombre de buffer ainsi que leurs tailles, la taille max de la requête URI est donc la multiplication de ces deux chiffres | +| large_client_header_buffers ​##​**Syntaxe:​** ?| définit le nombre de buffer ainsi que leurs tailles, la taille max de la requête URI est donc la multiplication de ces deux chiffres | 
-| client_body_timeout | si le client n'​envoie pas la totalité de sa requête en 5 sec c'est mort ! | +| client_body_timeout ​##​**Syntaxe:​** ? | si le client n'​envoie pas la totalité de sa requête en 5 sec c'est mort ! | 
-| client_header_timeout ​ | si le client n'​envoie pas l'​entête de sa requête même traitement| +| client_header_timeout  ​##​**Syntaxe:​** ? | si le client n'​envoie pas l'​entête 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_timeout 5 5 ##​**Syntaxe:​** ?| 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êtes keepalive sur une connexion | +| keepalive_requests 100  ​##​**Syntaxe:​** ? | nombre de requêtes keepalive sur une connexion | 
-| send_timeout | temps maximum de latence lors d'un envoi | +| send_timeout ​##​**Syntaxe:​** ? | temps maximum de latence lors d'un envoi | 
-| ignore_invalid_headers | supprime les requêtes malformées | +| ignore_invalid_headers ​##​**Syntaxe:​** ?| supprime les requêtes malformées | 
-| server_name_in_redirect | désactive la réécriture du nom de serveur, protection contre les scans | +| server_name_in_redirect ​ ##​**Syntaxe:​** ?| désactive la réécriture du nom de serveur, protection contre les scans | 
-| gzip "";​ ##​**Syntaxe:​**gzip **on** **off**; ​ | **ngx_http_gzip_module** est un filtre qui compresse les requêtes de type ACK à l'aide de la méthode « gzip ». Souvent, ça permet de réduire la taille des données transmises. ​ Nous pouvons via ce module, réduire de moitié les données transmises, voir même plus :-). | +| gzip "";​ ##​**Syntaxe:​**gzip **on** **off**;| **ngx_http_gzip_module** est un filtre qui compresse les requêtes de type ACK à l'aide de la méthode « gzip ». Souvent, ça permet de réduire la taille des données transmises. ​ Nous pouvons via ce module, réduire de moitié les données transmises, voir même plus :-). | 
-|gzip_comp_level ​ | niveau de compression (peut aller jusqu'​à 9) | +|gzip_comp_level ​##​**Syntaxe:​** ?  | 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 | +| gzip_proxied any ##​**Syntaxe:​** ?  | activer la compression pour la réponse du serveur web derrière le reverse proxy | 
-| gzip_vary on; ##​**Syntaxe:​** gzip_vary **on** ​ **off**; | Active ou désactive l'​insertion de **Vary: Accept-Encoding** dans le header de votre requête ACK. Seulement si un des modules **gzip**, gzip_static ou gunzip sont actif. Dans le cas du site ubuntu-fr.org le module **gzip_vary** est sur **off**((http://​stackoverflow.com/​questions/​7848796/​what-does-varyaccept-encoding-mean)),​ la compression de notre header ne semble donc pas active.. .((+| gzip_vary on; ##​**Syntaxe:​** gzip_vary **on** ​ **off**; | Active ou désactive l'​insertion de **Vary: Accept-Encoding** dans le header de votre requête ACK. Seulement si un des modules **gzip**, gzip_static ou gunzip sont actif. Dans le cas du site ubuntu-fr.org le module **gzip_vary** est sur **off**((https://​stackoverflow.com/​questions/​7848796/​what-does-varyaccept-encoding-mean)),​ la compression de notre header ne semble donc pas active.. .((
 HTTP/1.1 200 OK HTTP/1.1 200 OK
 Server: nginx Server: nginx
Ligne 564: Ligne 214:
 Cache-Control:​ no-cache, must-revalidate,​ max-age=0 Cache-Control:​ no-cache, must-revalidate,​ max-age=0
 Pragma: no-cache)) ​ | Pragma: no-cache)) ​ |
-| gzip_types | les types de fichier qui seront compréssés | +| gzip_types ​##​**Syntaxe:​** ?  ​| les types de fichier qui seront compréssés | 
-| gzip_disable | permet la désactivation ​de la compression pour les navigateurs pourris ​+| gzip_disable ​"​msie6";​ ##​**Syntaxe:​** gzip_disable **regex** ...; Désactive via une regexp gzipping. Le module utilisera encore une fois le header(( GET / HTTP/1.1 
-|limit_zone gulag $binary_remote_addr 1m | crée une zone de stockage nommée « gulag » utilisant ​ moins de 1 mo de RAM, contenant l'​état des connexions classé par adresse ip | +**User-Agent:​** curl/​7.35.0 
-| limit_conn gulag 50 | limite le nombre de demande de connexions parallèles à 50 par client |+Host: ubuntu-fr.org 
 +Accept: */*)) pour récupérer l'​**User-Agent** ​de votre visiteur. Vous noterez qu'il existe une exception à la règle concernant ​les regexp -> [[https://​fr.wikipedia.org/​wiki/​Internet_Explorer_6|msie6]] :-), si cette exception ne serait pas d'​actualité,​ nous aurions utilisé cette regexp: <​code>​MSIE [4-6]\.</​code> ​
 +|limit_zone gulag $binary_remote_addr 1m ##​**Syntaxe:​** ? | crée une zone de stockage nommée « gulag » utilisant ​ moins de 1 mo de RAM, contenant l'​état des connexions classé par adresse ip | 
 +| limit_conn gulag 50 ##​**Syntaxe:​** ? | limite le nombre de demande de connexions parallèles à 50 par client ​
 +| include /​etc/​nginx/​mime.types;​ ##La liste des types MIME résolu par les extensions de fichiers. | Cette liste indique la nature des fichiers renvoyées par le serveur (ex: ceci est une page web http://​votrendd.tld/​hello.html ou ceci est une vidéo ogg ..  http://​votrendd.tld/​mavideo.ogg pour que Nginx "​comprenne"​ que c'est un format **.html** ou un format **.ogg** il lui faut un fichier mime.types). ​|
  
  
Ligne 577: Ligne 231:
 Si vous voulez plus d'​informations sur la configuration du proxy, allez voir la section de la documentation officielle [[http://​wiki.nginx.org/​NginxHttpProxyModule|ici]]. Si vous voulez plus d'​informations sur la configuration du proxy, allez voir la section de la documentation officielle [[http://​wiki.nginx.org/​NginxHttpProxyModule|ici]].
  
-Contenu du fichier ​ +Contenu du fichier ​
  
 <​code>​ <​code>​
Ligne 619: Ligne 273:
     * les codes d'​erreurs seront interceptés et une page sera renvoyée     * les codes d'​erreurs seront interceptés et une page sera renvoyée
  
-Contenu du fichier trucbidule:+Contenu du fichiertrucbidule:
  
 <​code>​ <​code>​
Ligne 645: Ligne 299:
  
  
-location ~*^.+(swf|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav| +location ~*^.+(swf|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
-bmp|rtf|js)$ {+
     proxy_pass http://​192.168.0.100:​80;​     proxy_pass http://​192.168.0.100:​80;​
     proxy_cache cache;     proxy_cache cache;
Ligne 668: Ligne 321:
  
 ^ options ​                 ^ explications ​         ^ ^ options ​                 ^ explications ​         ^
-| listen ​        ​| adresse et port d'​écoute,​ ici il écoute sur toutes les adresses | +| listen ​  ##​**Syntaxe:​** ?      ​| adresse et port d'​écoute,​ ici il écoute sur toutes les adresses | 
-| server_name | nom de domaine du serveur arrière, possibilité d'en spécifier plusieurs| +| server_name ​##​**Syntaxe:​** ?| nom de domaine du serveur arrière, possibilité d'en spécifier plusieurs| 
-| error_page ​ | redirection des erreurs suivantes vers le chemin indiqué | +| error_page ​##​**Syntaxe:​** ? | redirection des erreurs suivantes vers le chemin indiqué | 
-| proxy_pass | indique l'​adresse du serveur web arrière | +| proxy_pass ​ ##​**Syntaxe:​** ?| indique l'​adresse du serveur web arrière | 
-| proxy_cache_valid 12h | toutes les pages retournant avec un code 200 301 et 302 seront stockées en cache pendant 12 heures. Il est possible de spécifier les codes html pour lesquels les fichiers doivent être mis en cache| +| proxy_cache_valid 12h ##​**Syntaxe:​** ? | toutes les pages retournant avec un code 200 301 et 302 seront stockées en cache pendant 12 heures. Il est possible de spécifier les codes html pour lesquels les fichiers doivent être mis en cache| 
-| proxy_cache | indique la zone de stockage pour le cache | +| proxy_cache ​##​**Syntaxe:​** ? | indique la zone de stockage pour le cache | 
-| proxy_cache_use_stale | Si le serveur arrière renvoi ces erreurs error timeout invalid_header updating nginx servira les fichiers qu'il possède en cache| +| proxy_cache_use_stale ​##​**Syntaxe:​** ? | Si le serveur arrière renvoi ces erreurs error timeout invalid_header updating nginx servira les fichiers qu'il possède en cache| 
-| expires max | donne une date d'​expiration maximale pour que le client puisse mettre les fichiers statiques en cache|+| expires max ##​**Syntaxe:​** ?| donne une date d'​expiration maximale pour que le client puisse mettre les fichiers statiques en cache|
  
 Quelque explications sur notre configuration. Comme vous l'avez vu toutes les requêtes ne sont pas traitées de la même manière. Différentes règles ont été créées pour séparer les contenus. Quelque explications sur notre configuration. Comme vous l'avez vu toutes les requêtes ne sont pas traitées de la même manière. Différentes règles ont été créées pour séparer les contenus.
Ligne 719: Ligne 372:
 </​code>​ </​code>​
 ---- ----
 +
  
 ===== Autres configurations de Nginx ===== ===== Autres configurations de Nginx =====
Ligne 724: Ligne 378:
   * [[http://​www.howtoforge.com/​installing-php-5.3-nginx-and-php-fpm-on-ubuntu-debian|Installation de Nginx et PHP-FPM sur Debian/​Ubuntu]] via HowToForge   * [[http://​www.howtoforge.com/​installing-php-5.3-nginx-and-php-fpm-on-ubuntu-debian|Installation de Nginx et PHP-FPM sur Debian/​Ubuntu]] via HowToForge
   * [[http://​www.howtoforge.net/​installing-nginx-with-php-5.3-and-php-fpm-on-ubuntu-lucid-lynx-10.04|Installation de Nginx et PHP-FPM sur Ubuntu 10.04]]   * [[http://​www.howtoforge.net/​installing-nginx-with-php-5.3-and-php-fpm-on-ubuntu-lucid-lynx-10.04|Installation de Nginx et PHP-FPM sur Ubuntu 10.04]]
 +  * configurateur en ligne [[https://​www.digitalocean.com/​community/​tools/​nginx#?​]] (précédemment nginxconfig.io)
   * Nginx et PHP tournant en FastCGI : FIXME à compléter   * Nginx et PHP tournant en FastCGI : FIXME à compléter
 +  * connaître la version de nginx installé : <code bash>​nginx -V</​code>​
  
 ---- ----
  
 ===== Voir aussi ===== ===== Voir aussi =====
-  * [[http://nginx.net/|Site officiel de Nginx]] +  * [[https://nginx.org/|Site officiel de Nginx]]
-  * [[http://​wiki.nginx.org/​NginxFr|Wiki Nginx]] **(fr)**+
   * [[wp>​fr:​Nginx|Nginx sur Wikipédia]]   * [[wp>​fr:​Nginx|Nginx sur Wikipédia]]
-  * [[http://​www.it-connect.fr/​installation-du-serveur-web-nginx/​|Installation de Nginx sous Linux]] **(fr)** 
-  * [[http://​www.it-connect.fr/​installer-un-serveur-lemp-linux-enginex-mysql-php/​|Mise en place d'un serveur LEMP (Linux EngineX MySQL PHP) avec Nginx]] **(fr)** 
-  * [[http://​www.it-connect.fr/​gerer-le-log-level-sous-nginx/​|Gérer le log level sous Nginx]] **(fr)** 
  
 ---- ----
  
-//​Contributeur principaux : [[:​utilisateurs:​ButterflyOfFire]],​ [[:​utilisateurs:​lildadou]], [[utilisateurs:​mezen]], [[:​utilisateurs:​Miam Miam]] (Tutoriel Reverse Proxy Nginx), [[utilisateurs:​BeAvEr]].//​+//​Contributeur principaux : [[:​utilisateurs:​ButterflyOfFire]],​ [[:​utilisateurs:​lildadou]],​ [[:​utilisateurs:​Miam Miam]] (Tutoriel Reverse Proxy Nginx), [[utilisateurs:​BeAvEr]] ​(Refonte de l'​intégralité du tutoriel).//
  • nginx.1439505876.txt.gz
  • Dernière modification: Le 14/08/2015, 00:44
  • par BeAvEr