Ajout d'infos de filtrage pour Nginx

This commit is contained in:
Jérémy Lecour 2019-08-06 13:58:27 +02:00 committed by Jérémy Lecour
parent be0fbb5fac
commit 47215e8698

View file

@ -636,6 +636,29 @@ location /YYYYYY/ {
error_page 403 /YYYYYY/;
~~~
### Appliquer des conditions sur des en-têtes
Il est possible de configurer des comportements conditionnés par le contexte d'une requête.
Voici quelques exemples :
~~~
# rejetter toutes les méthodes autres que POST
if ($request_method != "POST" ) {
return 405;
}
# rejetter les requêtes qui n'ont pas une valeur spécifique pour un en-tête personnalisé
# NB : les variables "$http_x_" sont automatiquement remplies avec les en-têtes personnalisés.
if ($http_x_requested_with != "XMLHttpRequest" ) {
return 403;
}
# rejeter les requêtes qui ne sont pas du JSON
if ($content_type != "application/json") {
return 403;
}
~~~
Attention toutefois à l'utilisation de `if` dans un bloc `location` : [IfIsEvil](https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/). Cela peut avir des comportements inattendus.
### Comment prononcer Nginx ?
C'est la première question de la [FAQ officielle](https://www.nginx.com/resources/wiki/community/faq/#how-do-you-pronounce-nginx) du projet. Pour les francophones, voilà notre astuce :
@ -656,4 +679,4 @@ Nginx ne gère pas les fichiers `.htaccess`. Si vous devez utiliser des fichiers
Il est posisble de créer des "hash map" (cf. [ngx_http_map_module](http://nginx.org/en/docs/http/ngx_http_map_module.html)) pour facilement cérer des variables utilisables dans des blocks, des logs…
Sauf que ces maps ne sont pas restreintes à un bloc serveur (VHost), mais appliquées à tout le bloc http. Il ne faut donc pas donner le même nom à 2 maps, au risque d'avoir des conflits difficiles à débugger.
Sauf que ces maps ne sont pas restreintes à un bloc serveur (VHost), mais appliquées à tout le bloc http. Il ne faut donc pas donner le même nom à 2 maps, au risque d'avoir des conflits difficiles à débugger.