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, 19:42]
beaver sérieux ? proxy inverse ?
nginx [Le 31/10/2023, 10:28] (Version actuelle)
bcag2 ancienne révision (Le 30/05/2023, 10:36) restaurée
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 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. 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).
  
 ---- ----
Ligne 47: Ligne 45:
 ==== Le nginx.conf par défaut ==== ==== Le nginx.conf par défaut ====
  
-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).+Le fichier **/etc/nginx/nginx.conf** est l'​élément névralgique de votre serveur Nginx. ​
  
-FIXME EN COURS --- //​[[:​utilisateurs:​beaver|beaver]] Le 11/08/201515:30//. +Après modificationil est prudent ​de le //tester// avec :  
-^ Les modules ^ Les explications ^ ​                                                   +<​code ​bash>nginx -t</​code>​ 
-|<​code>​user www-data; ##​**Syntaxe:​** **user** **user** **[group]**;</​code>​ | 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é. | + 
-|<​code>​worker_processes 4; ##​**Syntaxe:​** worker_processes **nombre** ​ **auto**; </​code>​ | 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**. |  +Puis, pour que les modifications ​de configuration soient prises en compte, il faut lancer ​(-send **s**ignal ((https://​www.nginx.com/resources/wiki/start/topics/tutorials/commandline/))) : 
-|<​code>​pid ​/run/nginx.pid;##​**Syntaxe:​** pid **fichier.pid**;<​/code> | Le fichier stockera le [[https://​fr.wikipedia.org/​wiki/​Identifiant_de_processus|PID]] de votre processus. | +<code bash>​nginx -s reload</​code>​
-|<​code>​events { worker_connections 768; ##**Syntaxe:** worker_connections **nombre**;</​code>​ | Définir le nombre maximal de connexions simultanées ouvertes par le processus. | +
-<​code>​multi_accept on;} ##​**Syntaxe:​** multi_accept **on** ​ **off**;</​code> ​| 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. |  +
-|<​code>​http { sendfile on; ##​**Syntaxe;​** sendfile **on** **off**;</​code>​ | Nous allons dire que nous avons un **index ​ index.php;​** dans notre virtual hostSendfile 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. |  +
-|<​code>​tcp_nopush on; ##​**Syntaxe:​** tcp_nopush **on** ​ **off**</​code>​ | Le module **tcp_nopush** fait le contraire ​de **tcp_nodelay** : au lieu d’optimiser les délais d’envoi des informationsil optimise la quantité d’informations envoyée. **tcp_nopush** et **sendfile** sont indissociable((comprendre qu'il faut absolument que sendfile soit actif.. .)). |  +
-| <​code>​tcp_nodelay on; ##​**Syntaxe:​** tcp_nodelay **on** ​ **off**;</​code>​ | 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)). ​  +
-|<​code>​keepalive_timeout 65; ##​**Syntaxe:​** keepalive_timeout **timeout** **[header_timeout]**;</​code>​ | **Le premier paramètre est obligatoire** 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 quand à lui est facultatif** définit la valeur de délai de l'​[[https://​fr.wikipedia.org/​wiki/​Header|entête // header]]. |  +
-|<​code>​types_hash_max_size 2048; ##​**Syntaxe:​** types_hash_max_size **taille**;</​code>​ | 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]],​ Pour les [[https://​fr.wikipedia.org/​wiki/​Type_MIME|Types MIME]], etc ... Nginx utilise les tables de hachage. | +
-| <​code>​server_tokens off; ##​**Syntaxe:​** server_tokens **on** ​ **off**;</​code>​ | Active ou désactive l'​émission de votre [[https://​ubuntu-fr.org/​.ht|version]] Nginx. Dans notre exemple, nous voyons bien que le site ubuntu-fr.org cache sa version Nginx :-).|  +
-|<​code>​server_names_hash_bucket_size 64; ##</​code>​|En cours|  +
-|<​code>​server_name_in_redirect off; ##​**Syntaxe:​** server_name_in_redirect **on** ​ **off**;</​code>​| 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(. 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(( GET **/** **HTTP/​1.1** User-Agent: curl/7.35.0 **Host: ubuntu-fr.org** Accept: */*)) | +
-|<​code>​include /etc/nginx/mime.types; ##La liste des types MIME résolu par les extensions de fichiers.<​/code> | 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).| +
-|<​code>​default_type application/​octet-stream;​ ##​**Syntaxe:​** default_type **mime-type**;</​code>​ | 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]]. |  +
-|<​code>​access_log /​var/​log/​nginx/​access.log;</​code>​ | Vous retrouverez dans votre fichier **access.log** les **GET'​S/​POST'​S** de chaque visiteur visitant votre site.| +
-|<​code>​error_log /​var/​log/​nginx/​error.log;</​code>​ | Ici à contrario vous retrouverez dans votre fichier **error.log** les erreurs **403, 404, 500, 503**, venant de vos visiteurs (par exemple):-).|  +
-|<​code>​gzip on; ##​**Syntaxe:​**gzip **on** | **off**;</​code>​|**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 :-). |  +
-|<​code>​gzip_disable "​msie6";​ ##**Syntaxe:** gzip_disable **regex** ...;</​code>​ | Désactive via une regexp gzipping. Le module utilisera encore une fois le header((GET / HTTP/1.1 **User-Agent:​** curl/7.35.0 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>​.| +
-<code>​gzip_vary on; ##​**Syntaxe:​** gzip_vary **on** | **off**;</​code>​ | 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((HTTP/​1.1 200 OK Server: nginxContent-Type:​ text/html; charset=utf-8 Expires: Sun, 19 Nov 1978 05:00:00 GMT Last-Modified:​ Wed, 12 Aug 2015 21:43:15 +0000 ETag: "​1439415795"​ Content-Language:​ en X-Generator:​ Drupal 7 (http://​drupal.org) Link: </​intro>;​ rel="​canonical",</​node/​17>;​ rel="​shortlink"​ **Content-Encoding:​ gzip**)) ne semble donc pas active.. .| +
-|<​code>​gzip_proxied any; ##​**Syntaxe:​** gzip_proxied off | expired | **no-cache**</​code>​ <​code>​| no-store | private | no_last_modified | no_etag | auth | any;</​code>​| Active ou désactive la compression gzip pour les proxys. gzip_proxied vérifie le 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)) de votre connexion ACK  (la partie **Cache-Control**). 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**.| +
-|<​code>​gzip_comp_level 6; ##</​code>​| En cours |  +
-|<​code>​gzip_buffers 16 8k; ##</​code>​| En cours |  +
-|<​code>​gzip_http_version 1.1; ##</​code>​ | En cours |  +
-|<​code>​gzip_types text/plain text/css application/​json application/​x-javascript text/​xml</​code><​code>​application/​xml application/​xml+rss text/​javascript;​ ##</​code>​| En cours |  +
-|<​code>​nginx-naxsi config ##</​code>​ | En cours | +
-|<​code>​include /​etc/​nginx/​naxsi_core.rules;​ ##</​code>​ | En cours | +
-|<​code>​nginx-passenger config;##</​code>​ | En cours | +
-|<​code>​passenger_root /usr; ##</​code>​ | En cours | +
-|<​code>​passenger_ruby /​usr/​bin/​ruby;​ ##</​code>​ | En cours | +
-|<​code>​include /​etc/​nginx/​conf.d/​*.conf;</​code>​ | 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. | +
-| <code>include /etc/nginx/sites-enabled/​*;​}</​code>​ | 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/​** :-). | +
-|<​code>​mail { auth_http localhost/​auth.php;​ ##</​code>​| En cours |  +
-|<​code>​pop3_capabilities "​TOP"​ "​USER";​ ##</​code>​| En cours |  +
-|<​code>​imap_capabilities "​IMAP4rev1"​ "​UIDPLUS";​ ##</​code>​| En cours |  +
-|<​code>​server { listen ​    ​localhost:​110;​ ##</​code>​ | En cours | +
-|<​code>​protocol ​  pop3; ##</​code>​ | En cours | +
-|<​code>​proxy ​     on; ##</​code>​| En cours | +
-|<​code>​server { listen ​    ​localhost:​143;​ ##</​code>​ | En cours | +
-|<​code>​protocol ​  imap; ##</​code>​ | En cours | +
-|<​code>​proxy ​     on;}} ##</​code> ​| En cours |+
  
 ---- ----
Ligne 103: 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 117: Ligne 77:
 ---- ----
  
-===== Configuration ​serveur ​reverse proxy et cache Web =====+===== Configuration ​ ​du ​reverse proxy et du cache Web =====
    
-==== Configuration d'un reverse proxy 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 133: 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 142: 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 161: Ligne 121:
 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 219: 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 254: 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 "​msie6";​ ##​**Syntaxe:​** gzip_disable **regex** ...; | Désactive via une regexp gzipping. Le module utilisera encore une fois le header(( GET / HTTP/1.1 | 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
 **User-Agent:​** curl/7.35.0 **User-Agent:​** curl/7.35.0
 Host: ubuntu-fr.org 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>​ | 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 | 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_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 | limite le nombre de demande de connexions parallèles à 50 par client | +| 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). | | 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 271: 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 313: 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 339: 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 362: 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 419: 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.1439574162.txt.gz
  • Dernière modification: Le 14/08/2015, 19:42
  • par beaver