Travailler avec Nginx

Les deux premiers articles de la série ont donné un aperçu et également présenté les modules essentiels pour Nginx. Ce tutoriel vous aidera à vous familiariser avec Nginx en vous guidant à travers des techniques de base sur la gestion des fichiers de configuration et la configuration de paramètres de base dans les configurations.. 

Fractionnement des fichiers de configuration

Une fois Nginx installé, le / etc / nginx / Le répertoire aura le contenu suivant:

  • nginx.conf: Le fichier de configuration primaire.
  • conf.d: utilisé pour des choses comme le chargement de module et pour des choses qui ne sont pas spécifiques à un seul hôte virtuel.
  • sites disponibles: stocker tout configurations d'hôte virtuel, même si elles ne sont actuellement pas activées.
  • activé pour les sites: tous les sites activés (liens symboliques vers les fichiers du dossier sites-available).
  • mime.types: mappe les extensions de nom de fichier aux types de réponses MIME.

Ce flux de travail de dossier * rend les choses un peu plus organisées. Dans le cas de plusieurs sites Web, à savoir des hôtes virtuels, chaque hôte virtuel reçoit son propre fichier de configuration.. sites disponibles peut contenir tous les fichiers de configuration de l'hôte virtuel, tandis que ceux qui sont activés peuvent être liés de façon symbolique activé pour les sites.

Cette configuration est la configuration par défaut lorsque vous installez Nginx. Vous pouvez voir comment comprendre a permis l'inclusion de fichiers de configuration externes. S'il y a des erreurs dans l'un de ces fichiers inclus, le chargement de Nginx sera impossible..

Plusieurs hôtes virtuels

Nginx, comme tout autre serveur Web, vous permet de configurer plusieurs hôtes virtuels..

# sites-enabled / exemple.com.conf serveur listen 80; # adresse et port, ou uniquement adresse ou seul port. nom_serveur example.com www.example.com; # noms d'un serveur virtuel. Peut utiliser des expressions génériques et régulières. access_log /var/log/nginx/example_com_access.log; error_log /var/log/nginx/example_com_error.log; # définit la configuration en fonction de l'URI de la demande. emplacement / root /var/www/www.example.com; index index.html index.htm; 

Cela se fait via le bloc serveur. La directive d'écoute décrit le port sur lequel le serveur Web est à l'écoute et la directive nom_serveur répertorie tous les noms de serveur. À l'intérieur de l'emplacement, vous pouvez définir le fonctionnement de l'hôte virtuel..

Rechargement de Nginx

L'identifiant du processus maître Nginx est écrit dans un fichier tel que défini par la directive pid, par exemple. pid /var/run/nginx.pid;. Ce processus maître prend en charge les signaux suivants:

TERM, INT Arrêt rapide
QUITTER Arrêt gracieux
HUP Recharger configuration + arrêt progressif des travailleurs + redémarrage
USR1 Rouvrir les fichiers de log
USR2 Mise à niveau de l'exécutable à la volée
TREUIL Arrêt en douceur des processus de travail

Pour recharger Nginx, vous pouvez exécuter tuer -HUP

Les processus de travail individuels peuvent également être contrôlés via des signaux.

TERM, INT Arrêt rapide
QUITTER Arrêt gracieux
USR1 Rouvrir les fichiers de log
TREUIL arrêt anormal pour le débogage
* nécessite des points de débogage

Nginx en mode débogage

Pour cela, vous devrez compiler Nginx avec le drapeau de débogage (--avec debug). Après cela, il est possible de déboguer des connexions à partir d’adresses spécifiques avec le debug_connection directif.

error_log / var / log / nginx / errors; events debug_connection 192.168.1.18; 

Lorsque vous demandez de l’aide avec Nginx, assurez-vous de partager les résultats de nginx -V, configuration complète et le journal de débogage.

404 et autres pages d'erreur

Ceci est réalisé avec l'aide d'un error_page directif. Il définit la ressource qui sera affichée pour l'erreur.

# 1 error_page 404 /404.html; error_page 500 502 503 504 /50x.html; # 2 error_page 404 = 200 /empty.gif; # change le code de réponse en un autre en utilisant “= response” error_page 404 = 301 http://example.com/notfound.html; # utilise les redirections pour le traitement des erreurs # 3 # le traitement des erreurs avec un emplacement nommé / error_page 404 = @fallback;  emplacement @fallback proxy_pass http: // backend; 

Il y a aussi une directive appelée recursive_error_pages qui permet de faire plusieurs redirections en utilisant la directive error_page. Par exemple:

error_page 400 404 /404.html; recursive_error_pages on; emplacement ~ * ^ / (404 \ .html | 500 \ .html | 503 \ .html) $ log_not_found off; # Désactive la journalisation des erreurs concernant les fichiers non trouvés. error_page 404 = @default;  location @default log_not_found on; root / var / www / default; 

Répertoire d'indexation automatique

Une demande dans laquelle le fichier d'index est introuvable est acheminée vers ce module (ngx_http_autoindex_module). [Exemple: partage de réseau local]

emplacement / racine / var / www / localdropbox; autoindex sur; # Active ou désactive la sortie de la liste de répertoires. autoindex_exact_size off; # Taille exacte du fichier vs arrondi au Ko, Mo, Go le plus proche. autoindex_format html; # format d'une liste de répertoires. XML, JSON, JSONP possible. autoindex_localtime on; # local TZ vs UTC.  

Taille des téléchargements de fichiers

"Entité de demande trop grande" (413) est un message d'erreur courant lorsque l'utilisateur tente de télécharger un fichier. Cette taille de fichier est contrôlée par une variable de configuration Nginx:

variable client_max_body_size 10M; # M signifie mégaoctets.

Cela définit la taille maximale du corps de la demande du client, spécifiée dans l'en-tête de demande «Content-Length». Pour obtenir les commentaires des utilisateurs sur ces téléchargements, vous pouvez également utiliser nginx-upload-progress-module. Vous devez ajouter un X-Progress-ID, qui permet d'identifier de manière unique le fichier en cours de téléchargement..

Biscuits

Nginx a une fonctionnalité très utile et astucieuse de servir des cookies pour identifier les utilisateurs finaux. Dans une situation dans laquelle vous ne souhaitez pas utiliser d'analyse externe, le ngx_http_userid_module module peut remplir en servant des cookies.

ID utilisateur sur; nom_utilisateur uid; userid_domain example.com; userid_path /; userid_expires 365d; userid_p3p 'policyref = "/ w3c / p3p.xml", CP = "CUR ADM NOS ID STA NOR" ";

En activant ce module, les variables $ uid_reset$ uid_got et $ uid_set devenir disponible. Ceux-ci peuvent vous aider à écrire des règles de réécriture encore plus complexes.

Ces étapes devraient certainement vous aider à utiliser Nginx de manière plus productive. 

Ressources supplémentaires

  1. Comment nginx traite une requête
  2. Débogage Nginx