Nginx est un serveur web haute performance et un serveur proxy très répandu dans l'architecture des réseaux. Il est connu pour ses excellentes performances et sa fiabilité, en particulier dans l'application du proxy inverse, et il est difficile d'ébranler sa position. Comment configurer correctement le répertoire de proxy inverse de Nginx est un sujet important auquel tous les développeurs et administrateurs de sites web devraient prêter attention.
1) Principes de base des répertoires de proxy inversé
Pour parler des astuces de configuration du répertoire de proxy inverse de Nginx, nous devons d'abord comprendre les principes de base du proxy inverse. Pour simplifier, le proxy inverse consiste à transmettre la requête du client au serveur cible et à renvoyer la réponse au client, ce qui permet de masquer l'adresse IP du serveur réel, l'équilibrage de la charge, l'accélération du cache, etc. Dans Nginx, en configurant la directive location du serveur proxy, vous pouvez réaliser la correspondance des règles et la distribution des requêtes à différentes URL.
2) Mise en place de règles de correspondance des chemins d'accès pour les répertoires du proxy inverse
Dans Nginx, la directive location est la clé pour définir le répertoire du proxy inverse. Elle peut faire correspondre les règles de configuration correspondantes basées sur le chemin d'URL de la requête et spécifier l'adresse du serveur de destination. Lors de la configuration du répertoire du proxy inverse, nous pouvons utiliser des symboles de correspondance tels que "=", "^~" et "~" pour garantir l'exactitude des règles.
a) Utilisez le symbole de correspondance "=" pour faire correspondre exactement le chemin d'accès au répertoire :
nginx
location = /example {
proxy_pass http://backend_server ;
}
Avec la configuration ci-dessus, Nginx ne transmettra la requête au serveur backend que si le chemin de la requête est "/example", ce qui convient aux scénarios dans lesquels un répertoire spécifique doit faire l'objet d'une procuration inverse.
b) Utiliser le symbole de correspondance "^~", préfixé pour correspondre aux chemins d'accès aux répertoires :
nginx
location ^~ /example/ {
proxy_pass http://backend_server ;
}
La notation "^~" est utilisée pour indiquer que Nginx effectuera un proxy inverse de toutes les demandes d'URL commençant par "/exemple/" vers le serveur backend. Cette correspondance de préfixe est généralement utilisée pour proxyer tous les fichiers et sous-répertoires d'un répertoire.
c) Utilisez le symbole de correspondance "~" pour faire correspondre un chemin d'accès à un répertoire :
nginx
location ~ ^/example/( ?. *)$ {
proxy_pass http://backend_server/$subpath ; }
}
Cette correspondance basée sur les expressions régulières est relativement flexible et permet de définir des règles plus complexes si nécessaire. Dans la configuration ci-dessus, nous utilisons des expressions régulières pour extraire le sous-chemin et transmettre la requête au sous-chemin correspondant du serveur dorsal. Par exemple, la requête "/exemple/fichier.txt" sera transmise à "http://backend_server/file.txt".
3. considérations relatives à la configuration de plusieurs répertoires de proxy inverse
Dans la pratique, il est souvent nécessaire de configurer plusieurs répertoires de proxy inverse. Cependant, lorsque vous utilisez plusieurs directives de localisation, vous devez faire attention à la priorité des règles :
- Nginx recherchera la correspondance exacte de la directive du symbole "=", et si la correspondance est réussie, il cessera de rechercher les autres directives.
- Nginx va rechercher la directive du symbole "^~", et si la recherche est fructueuse, il cessera de rechercher d'autres directives.
- Nginx fera correspondre les directives du symbole "~" dans l'ordre de la configuration et sélectionnera la première correspondance réussie.
Lorsque l'on configure plusieurs répertoires de proxy inverse, pour éviter les conflits et les erreurs d'orientation, il faut définir judicieusement l'ordre des directives de localisation individuelles.
4) Fonctionnalités avancées des répertoires de proxy inverse de Nginx
Outre la correspondance de base des chemins d'accès, Nginx propose des fonctions avancées pour optimiser les paramètres des répertoires du proxy inverse.
a) Équilibrage de la charge :
En mettant en place un annuaire proxy inverse, nous pouvons distribuer les requêtes à plusieurs serveurs dorsaux afin d'obtenir un effet d'équilibrage de la charge. Exemple :
nginx
http {
upstream backend_servers {
serveur backend1.example.com ;
serveur backend2.example.com ;
}
serveur {
location /example/ {
proxy_pass http://backend_servers ; }
}
}
}
Dans la configuration ci-dessus, la directive upstream est configurée pour définir plusieurs serveurs backend auxquels Nginx distribuera les requêtes provenant du répertoire "/example/".
b) Désactiver la mise en cache :
Parfois, nous ne voulons pas que Nginx mette en cache le contenu du proxy inverse. Pour ce faire, vous pouvez utiliser la directive proxy_cache_bypass et lui donner la valeur true pour désactiver la mise en cache.
nginx
location /example/ {
proxy_pass http://backend_server ;
proxy_cache_bypass true ;
}
Avec la directive proxy_cache_bypass définie dans la configuration ci-dessus, Nginx ne mettra plus rien en cache lors de la transmission par proxy du répertoire "/example/".