La directive map Nginx
Accueil Tags Recherche14 Octobre 2022
La directive map Nginx
À quoi sert la directive map de Nginx, et pourquoi l'utiliser ?Présentation
La directive map
permet de créer des variables, dont les valeurs dépendent d’autres variables.
Dit comme ça ce n’est pas forcément très parlant, prenons cet exemple :
map $a $b {
default 0;
foo 1;
bar 2;
}
Il serait équivalent à ce code en Python :
match a:
case 'foo':
b = 1
case 'bar':
b = 2
case _:
b = 0
Exemples d’utilisation
Vous pouvez par exemple facilement définir un plan de redirection avec la directive map
:
http {
index index.html;
map $uri $redirect_uri {
/nous-contacter.html /contact.html;
/accueil.html /index.html;
}
server {
listen 80;
location / {
if ($redirect_uri) {
rewrite ^ $redirect_uri permanent;
}
}
}
}
Ou bien encore activer les logs d’accès uniquement pour les accès extérieurs au réseau (ici un réseau au CIDR 10.1.0.0/16
). Vous noterez l’utilisation du module geo
qui fonctionne exactement comme une map
, mais en se basant sur l’adresse IP du client :
http {
geo $remote_addr $enable_access_log {
default 1;
10.1.0.0/16 0;
}
server {
listen 80;
location / {
access_log /var/log/access.log combined if=$enable_access_log;
}
}
}
Si vous utilisez aussi le module geoip
, vous pouvez rapidement mettre en place des restriction d’accès à votre site par pays :
http {
index index.html;
map $geoip_country_code $allowed_country {
default no;
FR yes;
BE yes;
CH yes;
}
server {
listen 80;
if ($allowed_country = no) {
return 444;
}
}
}
La variable $geoip_country_code
que j’utilise ici fait partie des nombreuses variables disponible avec Nginx, libre à vous d’expérimenter avec elles pour trouver de nouvelles utilisations à cette directive map
!
Liens :
Documentation Nginx - Module map
Documentation Nginx - Module geo
Documentation Nginx - Module geoip
Documentation Nginx - Variables variables