form-input: module d'entrée de formulaire NGINX
Installation
Vous pouvez installer ce module dans n'importe quelle distribution basée sur RHEL, y compris, mais sans s'y limiter :
- RedHat Enterprise Linux 7, 8, 9 et 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 et Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-form-input
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-form-input
Activez le module en ajoutant ce qui suit en haut de /etc/nginx/nginx.conf :
load_module modules/ngx_http_form_input_module.so;
Ce document décrit nginx-module-form-input v0.12 publié le 16 mai 2016.
Il s'agit d'un module nginx qui lit le corps des requêtes HTTP POST et PUT encodées en "application/x-www-form-urlencoded", et analyse les arguments dans le corps de la requête en variables nginx.
Ce module dépend du module ngx_devel_kit (NDK).
Utilisation
set_form_input $variable;
set_form_input $variable argument;
set_form_input_multi $variable;
set_form_input_multi $variable argument;
exemple :
#nginx.conf
location /foo {
# assurez-vous que client_max_body_size == client_body_buffer_size
client_max_body_size 100k;
client_body_buffer_size 100k;
set_form_input $data; # lire le champ "data" dans $data
set_form_input $foo foo; # lire le champ "foo" dans $foo
}
location /bar {
# assurez-vous que client_max_body_size == client_body_buffer_size
client_max_body_size 1m;
client_body_buffer_size 1m;
set_form_input_multi $data; # lire tous les champs "data" dans $data
set_form_input_multi $foo data; # lire tous les champs "data" dans $foo
array_join ' ' $data; # maintenant $data est une chaîne
array_join ' ' $foo; # maintenant $foo est une chaîne
}
Limitations
- ngx_form_input rejettera les corps de requête qui sont mis en mémoire tampon dans des fichiers sur disque. Lorsque le paramètre client_max_body_size est supérieur à client_body_buffer_size, les corps de requête qui sont plus grands que client_body_buffer_size (mais pas plus grands que client_max_body_size) seront mis en mémoire tampon dans des fichiers sur disque. Il est donc important de s'assurer que ces deux paramètres de configuration prennent les mêmes valeurs pour éviter toute confusion.
GitHub
Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-form-input.