form-input: Módulo de entrada de formulario de NGINX
Instalación
Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:
- RedHat Enterprise Linux 7, 8, 9 y 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 y 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
Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:
load_module modules/ngx_http_form_input_module.so;
Este documento describe nginx-module-form-input v0.12 lanzado el 16 de mayo de 2016.
Este es un módulo de NGINX que lee el cuerpo de las solicitudes HTTP POST y PUT codificado en "application/x-www-form-urlencoded", y analiza los argumentos en el cuerpo de la solicitud en variables de NGINX.
Este módulo depende del módulo ngx_devel_kit (NDK).
Uso
set_form_input $variable;
set_form_input $variable argumento;
set_form_input_multi $variable;
set_form_input_multi $variable argumento;
ejemplo:
#nginx.conf
location /foo {
# asegurar que client_max_body_size == client_body_buffer_size
client_max_body_size 100k;
client_body_buffer_size 100k;
set_form_input $data; # leer el campo "data" en $data
set_form_input $foo foo; # leer el campo "foo" en $foo
}
location /bar {
# asegurar que client_max_body_size == client_body_buffer_size
client_max_body_size 1m;
client_body_buffer_size 1m;
set_form_input_multi $data; # leer todos los campos "data" en $data
set_form_input_multi $foo data; # leer todos los campos "data" en $foo
array_join ' ' $data; # ahora $data es una cadena
array_join ' ' $foo; # ahora $foo es una cadena
}
Limitaciones
- ngx_form_input descartará los cuerpos de las solicitudes que se almacenan en archivos de disco. Cuando la configuración client_max_body_size es mayor que client_body_buffer_size, los cuerpos de las solicitudes que son más grandes que client_body_buffer_size (pero no más grandes que client_max_body_size) se almacenarán en archivos de disco. Por lo tanto, es importante asegurarse de que estas dos configuraciones tengan los mismos valores para evitar confusiones.
GitHub
Puedes encontrar consejos adicionales de configuración y documentación para este módulo en el repositorio de GitHub para nginx-module-form-input.